Docker BuildKit
BuildKit is the abstracted and improved version of the container image builder that is (used to be?) shipped with docker(8).
Contents
Installation
In vertsion 23, the legacy builder for Docker images was deprecated. The deprecation message is as follows:
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/BuildKit (also known as buildx) is now the only supported builder. Users must opt in by setting DOCKER_BUILDKIT=1. Removal of the legacy builder has not yet been scheduled.
Users may also need to install the buildx plugin separately. This error would appear as:
ERROR: BuildKit is enabled but the buildx component is missing or broken.
Install the buildx component to build images with BuildKit:
https://docs.docker.com/go/buildx/On Arch, install docker-buildx.
Usage
docker build .
Contexts
BuildKit supports building in an isolated context (i.e., inside a container). Try:
$ docker buildx create --name my-builder --driver docker-container --bootstrap --use $ docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS my-builder* docker-container \_ my-builder0 \_ unix:///var/run/docker.sock running v0.25.1 linux/amd64 (+3), linux/arm64, linux/arm (+2), linux/ppc64le, (7 more) default docker \_ default \_ default running v0.25.1 linux/amd64 (+3), linux/arm64, linux/arm (+2), linux/ppc64le, (7 more)
One important advantage to this system is building multi-platform images.
docker buildx build --platform=linux/amd64,linux/arm64 .