github.com/moby/buildkit ↗
concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit
Open this visualization on its own page →
Contributors
158
Lines of Code
28,270
From
2015-12-14
To
2022-06-04
About moby/buildkit
BuildKit is a toolkit for converting source code into build artifacts in an efficient, expressive, and repeatable manner. Written in Go, it serves as the modern builder for Docker and other container systems, offering concurrent dependency resolution, efficient instruction caching, and automatic garbage collection. The project is designed to be Dockerfile-agnostic, meaning it can work with various build definition formats beyond traditional Dockerfiles.
The toolkit is composed of a buildkitd daemon and buildctl client, with the daemon supporting multiple worker backends including OCI (runc) and containerd. Key capabilities include build cache import and export to various backends like registries, local directories, GitHub Actions, S3, and Azure Blob Storage. BuildKit supports nested build job invocations, distributable workers, multiple output formats, and execution without root privileges. It introduces LLB, a binary intermediate format comparable to LLVM IR, which enables concurrent execution and efficient caching while remaining vendor-neutral.
BuildKit has achieved significant adoption across the container ecosystem, serving as the default builder in Docker Engine since version 23.0 and powering numerous projects including Moby/Docker, Tekton Pipelines, Docker buildx, Dagger, Earthly, Gitpod, and many others. The project supports an extensive ecosystem of frontends that compile different languages and build formats into LLB, including Buildpacks, Earthfile, HLB, Rust's Cargo Wharf, Python, Nix, and specialized formats for platforms like Unikraft. It can be deployed across Linux, Windows, and macOS, with support for rootless execution, Kubernetes deployments, and various containerization approaches.