Overview of Docker Build

Docker Build is one of the most used features of the Docker Engine - users ranging from developers, build teams, and release teams all use Docker Build. It uses a client-server architecture that includes several tools. The most common method is to use the Docker CLI with docker build command that sends requests to the Docker Engine that will execute your build.

Starting with version 18.09, Docker supports a new backend for executing your builds that is provided by the BuildKit project. The BuildKit backend provides many benefits compared to the old implementation. As there is a new backend, there is also a new client called Docker Buildx, available as a CLI plugin that extends the docker command with the full support of the features provided by BuildKit.

BuildKit is enabled by default for all users on Docker Desktop. If you have installed Docker Desktop, you don’t have to manually enable BuildKit. If you have installed Docker as a Linux package, you can enable BuildKit either by using an environment variable or by making BuildKit the default setting.

To set the BuildKit environment variable when running the docker build command, run:

$ DOCKER_BUILDKIT=1 docker build .

To enable BuildKit backend by default, set daemon configuration in /etc/docker/daemon.json feature to true and restart the daemon. If the daemon.json file doesn’t exist, create new file called daemon.json and then add the following to the file:

{
  "features": {
    "buildkit": true
  }
}

If you’re using the docker buildx build command, BuildKit will always being used regardless of the environment variable or backend configuration. See Build with Buildx guide for more details.

build, buildx, buildkit