We’re pleased to announce the release of Buildah version 1.8 which is now available from GitHub for any Linux distro. We are shipping this release on Fedora, RHEL 7, CentOS, openSUSE and Ubuntu in the near future.
The Buildah project has continued to grow over the past several weeks, welcoming several new contributors to the mix. Further updates were made to the performance of pulling and pushing images. The “.dockerignore” file is now usable with the buildah bud command, and the handling of symlinks during the container image process creation and the ways that layers are created has been corrected and tuned for better performance. This release also updates to the latest versions of containers/storage and containers/image giving Buildah improved pulling and pushing performance along with fixing many bugs.
This release comprises changes made for v1.7.1, v1.7.2, v1.7.3 and v1.8.0.
The major highlights for this release are:
Functionality has been added to use the .dockerignore file which excludes any files and directories from being copied to the container if they are listed in the .dockerignore file.
Further changes have been made to the vendor versions of container images and containers storage that increase the speed of pulling images and enhance the output noting the progress of the pull.
A number of issues were fixed in the build processing when a symlink was a target of the COPY or ADD commands in a Dockerfile. In addition, the number of times the layers are written has been reduced to increase performance.
A number of options have been added to the bud command to allow tailoring of DNS customization in the container image.
A –http-proxy variable has been added to the bud and from commands to allow disabling passing the default environment variables.
Release Changes
Changes for v1.8.0
Resolve symlink when checking container path for a copy destination.
When using --layers with the commit command, commit on every instruction, but not always by adding new layers.
Changes were made to the internal API to have stores before images when both were passed as parameters.
When selinux is not enabled, don’t set process and mount labels.
Fix buildahimages Dockerfiles to include support for additional images mounted from host.
Detect changes in rootdir when doing a COPY.
Any --build-args in the buildah bud command now set environment variables properly that are established by the Dockerfile.
The parent id of an image is now set appropriately.
Argument values used in the Dockerfile are now tracked and compared as expected.
Fixed a bug in the destination path when COPY used .dockerignore.
The BUILDAH_ISOLATION rootless setting has been added back.
Commit images for intermediate stages only when necessary, this is less frequently than in the past.
Added the –http-proxy option to the buildah bud and buildah from commands. Refer to the respective man pages for more information.
Changes for v1.7.3
Add Dockerfiles for buildahimages so that a container containing Buildah upstream, updates testing and stable can be housed at quay.io/buildah.
Replaced golang 1.10 with 1.12.
Added a number of --dns* flags to buildah bud to allow for customization of the container image. Refer to the buildah bud man page for details.
If a target name is not provided to commit a random name will be generated.
Fixed the bud --build-args option to allow comma separation.
COPY –from now pulls the image only when needed rather than at the start of the build process.
Make cleaner error on Dockerfile build errors.
Fix handling of a number of options containing commas.
Fixed an issue where history was being lost when the --layers option was being used.
Fixed a bug in .dockerignore to support a directory path.
Commit now sets created-by in the history to the shell if it isn’t set.
Changes for v1.7.2
When mounting, the namespace is created for a non-root user after mounting overlay to avoid triggering an error.
When the euid was not equal to zero, the namespace was not created as it should have been. This has been corrected.
Clean up logic for the bud command has been consolidated and tuned.
The ‘bud` command saves id’s internally more frequently to slightly tweak the performance of the command.
The ‘bud’ command now checks for any unused build arguments and prints a warning if any are found.
When running as a non-root user, the host network namespace is used if the --net option is not specified.
Use the /usr/share/containers/mounts.conf file rather than creating an empty mounts.conf file. This addresses an issue with RHEL subscriptions not working with the empty file.
The images command now suppresses a spurious blank line when there were no images.
When using ONBUILD instructions with the from command, the ADD and COPY commands are now handled correctly.
Set mtu to 65520 to improve slirp4netns network performance.
Changes were made to the images command to better handle images with the <none>:<none> tags.
Allow rootless users now use the cache directory in their homedir rather than the system default which at times was causing issues.
The commit command not prints out the resulting image id when the --layers option is used.
An error in the images command when using templates has been corrected.
A comment is now added by the build process to the container’s /etc/host file to prevent setup.rpm from setting up a default file with invalid values.
A number of changes to symlink handling in the build process have been created.
Errors are now printed to stderr.
Add “recommends” to the Buildah rpm packaging for the slirp4netns and fuse-overlay rpms.
Fixed an issue with the buildah unshare ls -l command and update the man page with more examples.
Is a tag is specified for an image, pull no longer replaces it with ‘:latest’.
The image name parsing was changed so that some “soft” errors are no longer shown.
Changes for v1.7.1
Move secrets code from Libpod into Buildah.
Neutralize buildah/unshare on non-Linux platforms.
Explicitly specify a directory to find(1).
Stop printing default values twice in cli –help.
Overall Miscellaneous Changes
Documentation changes:
install.md: add section about vendoring.
docs/buildah.md: add “containers-“ prefixes under “SEE ALSO”.
Added a missing step in instructions for installing into Ubuntu.
docs: 01-intro.md: add missing period in Dockerfile examples.
Added sample registries.conf to docs.
Escaped shell variables in README example.
README.md: rephrase Buildah description.
Remove noop from the bud man pages --squash option as it was enabled in an earlier version of Buildah.
Fix typo in buildah-pull(1).
Update pull and pull-always flags to clarify their use in the bud and from man pages.
Document the semantics of transport+name returned by ResolveName.
Vendored:
Vendor containers/image v1.5.
Vendor in containers/storage 1.12.3.
Vendor imagebuilder v1.1.0.
Bumped github.com/containernetworking/cni to v0.7.0-rc2.
Tests:
An extensive but minor change was made to handle and report errors found by bats tests.
A number of corrections and creations were added.
Plus a number of smaller fixes.
Try it Out.
If you haven’t yet, install Buildah from one of the Linux repos or GitHub and give it a spin. We’re betting you’ll find it’s an easy and quick way to build containers in your environment without a daemon being involved!
For those of you who contributed to this release, thank you very much for your contributions! If you haven’t joined our community yet, don’t wait any longer! Come join us on GitHub, where Open Source communities live.