Buildah vs BuildKit
Buildah
buildah.ioBuildKit
github.comSide by side
| Figure | Buildah | BuildKit |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | — | Yes |
| macOS | — | Yes |
| Linux | Yes | Yes |
| API | Yes | Yes |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Container Engines | 8.5 (#4) | 8.9 (#2) |
| Spec score · Container Build Tools | 8.5 (#5) | 8.9 (#4) |
| API | Buildah is based on a Go API that other tools can vendor. | The daemon listens on a gRPC API at /run/buildkit/buildkitd.sock by default and can also use TCP sockets. |
| Purpose | Buildah is a command-line tool for building Open Container Initiative (OCI) container images. | BuildKit is a toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner. |
| Support | The project site points users to tutorials, releases, and a mailing list; it describes maintainers as available to answer Buildah questions on the list. | The project directs users to the #buildkit channel on Docker Community Slack and to GitHub issues for reporting problems with release binaries. |
Plans
In their own words
Buildah
Buildah is a free command-line tool for building OCI container images on Linux. It can create images from working containers, Dockerfiles, or Containerfiles, and can also build through commands and scripts without a build file. Output can use OCI format or the traditional upstream Docker image format. Builds can run without root privileges, and Buildah follows a fork-exec model rather than running as a daemon. Its commands create, mount, unmount, delete, and rename working containers, as well as create or delete images; users can also pull images from a specified location and push local images elsewhere. Buildah is based on a Go API that other tools can vendor, and Podman uses it for Dockerfile builds while remaining independently installable. Buildah requires a kernel with OverlayFS or fuse-overlayfs support; RHEL or CentOS requires version 7.4 or later. Installation guidance warns that short image names can be spoofed and recommends fully qualified names from trusted registries or pulling by digest. The project points users to tutorials, releases, and a mailing list for questions.
BuildKit
BuildKit is a free toolkit for turning source code into build artifacts. It consists of the buildkitd daemon and buildctl client, and uses LLB, a binary format for describing process dependency graphs. Builds can use Dockerfiles or other LLB-compatible frontends, resolve dependencies concurrently, cache instructions, import and export caches, run nested jobs, and collect unused data automatically. BuildKit supports execution without root privileges and OCI (runc) or containerd workers. Results can be exported as images, local directories, tarballs, Docker tarballs, or OCI tarballs. Cache options include inline, registry, local-directory, and GitHub Actions backends; the README marks GitHub Actions, S3, and Azure Blob options experimental. The daemon provides a gRPC API over a Unix socket by default, with TCP sockets also supported. Binaries are available for Linux, macOS, and Windows. The unofficial Homebrew formula for macOS omits buildkitd; the project gives Lima in a Linux virtual machine as one way to run it. BuildKit is licensed under Apache-2.0.