We’re pleased to announce the release of Buildahversion 1.24.0, which is now available from GitHub for any Linux distro. We are shipping this release on Fedora 34, and Fedora 35 Buildah will also be shipped on CentOS, OpenSUSE, and Ubuntu soon. In addition, container images will be available at https://quay.io/repository/buildah/stable and https://quay.io/repository/containers/buildah.
The Buildah project has continued to grow over the past several weeks, welcoming several new contributors to the mix. This release features notable enhancements:
The --compression-format and compression-level flags have been added to the push command.
Several options were added to the --mount option for the Containerfile RUN and run commands.
The build--network option now supports custom networks.
This release comprises changes made for v1.24.0 and will be included in Podman v4.0.
Release Changes
Changes for v1.24.0
Label modification during a build now mimics Docker behavior.
Handle zstd compression when unmarshalling a layer.
A bug was fixed in the build that, under particular circumstances, could cause the build to stall.
The --compression-format and compression-level flags have been added to the push command.
Added the –all-platforms option to “buildah build”.
Added support for --mount=type=tmpfs to the Containerfile RUN and run commands to allow mounting volatile memory instead of persistent storage.
Added support for persistent caching across builds with –mount=type=cache.
Support for --mount=type=bind to the Containerfile RUN and run commands.
The from= field is now a valid option to pass to the --mount option for run. This allows images to be used as a source.
Add support for host.containers.internal in the /etc/hosts
Report ignorefile location when no content is added during a build, and an ignorefile is present.
Support has been added for overlayfs paths that contain a colon.
Rootless containers users should use additional groups by @rhatdan in #3593
USERS specified in a Containerfile can now become members of a supplementary group as specified in a Containerfile.
NetworkEnabled is now set appropriately when passed with the --network option.
Support was added to allow an environment variable to specify the source of a secret for a build command.
The image history no longer contains ARG values.
The /sys file system is no longer mounted if it is not needed.
An image’s variant field can now be seen via the inspect command or set with the config command.
The build--network option now supports custom networks.
Output for several errors were changed to show the command output for better debugging.
The --unsetenv option was added to the commit and build commands.
The time before closing an ssh connection has been Increased to allow for ssh enough time to close properly.
Multiple filters are now accepted by the images command.
The MediaType in OCI manifests is now set properly.
Rootless buildah commands can now set resource limits on cgroup V2.
The --memory-swap option for the build command can be set to -1 to allow unlimited memory swap.
Callers of the build command, such as Podman, can now replace the ContainerPrefix with a value of their choosing.
Fix default CNI paths so that their value is no longer hardcoded but pulled from the containers.conf file.
A number of changes were made to the Cobra CLI calls to make things more consistent for developers and end users.
Fixed the --platform option for the build command so it appropriately uses the value passed into it.
A fix was added to allow the runtime to be searched using a fully qualified path.
Added support to specify non-volatile upperdir and workdir for overlay volumes with the Containerfile RUN and run commands.
The pull commands are now: --pull, --pull=true, --pull=false, --pull=never, and --pull=always. Older commands such as --pull-always and --pull-never are still functional but are no longer documented.
Overall Miscellaneous Changes
Documentation:
Added a man page for Containerfile and .containerignore.
Updated the build1 –platform’ option’s compatibility notes.
Added example usage for manifest on its man page.
Fixed the tutorial to correct the run command in the ‘Using Containerfiles/Dockerfiles with Buildah’ section.
Updates were made to the tutorials to clarify how the run command works.
Clarifications were added to the build command’s --volume option.
A number of typos and grammatical errors were corrected throughout the man pages.
The links for the commands in top-level README.md were corrected.
Vendored:
Vendor in github.com/containerd/containerd 1.5.9
Vendor in github.com/containernetworking/cni 1.0.1
Vendor in github.com/containers/common 0.46.0
Vendor in github.com/containers/image/v5 5.19.0
Vendor in github.com/containers/storage 1.37.0
Vendor in github.com/docker/docker 20.10.12+incompatible
Vendor in github.com/fsouza/go-dockerclient 1.7.7
*Vendor in github.com/golangci/golangci-lint 1.44.0
Vendor in github.com/onsi/ginkgo 1.16.5
Vendor in github.com/onsi/gomega 1.18.0
Vendor in github.com/opencontainers/runc 1.1.0
Vendor in github.com/opencontainers/selinux 1.9.1
Vendor in github.com/spf13/cobra 1.3.0
Vendor in github.com/vbauerster/mpb v7.1.5
Tests:
Conformance: allow test cases to specify dockerUseBuildKit.
Conformance: add more tests for exclusion short-circuiting.
Tests now rely only on static/unchanging images.
The buildkit mount test files are now moved from TESTSDIR to TESTDIR before any modifications.
Enabled git-daemon tests.
Tests tools versions were bumped and some refactoring.
The tests no longer pull the PHP and composer images; instead, they pull the smaller busybox and libpod/testimage, which are smaller. This speeds up the tests and prevents a number of network timeouts.
The build tests now use a local git daemon for the git protocol test.
Fixed the libsubid test.
Changes to the build infrastructure:
Updated the VM Images and dropped prior-ubuntu testing.
Makefile now checks for -race using -mod=vendor.
Adjusted the -ldflags/-gcflags/-gccgoflags in the Makefile depending on the go implementation.
Makefile now only uses race detection when it’s available.
Cirrus: Run int. tests in parallel with unit tests.
Updated golangci-lint, its config, and fixed some warnings.
The GitHub workflow now reports both failures and errors.
Plus several minor 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.