Build Backends
The build backend is a software or service responsible for actually building the images. dib itself is not capable of building images, it delegates this part to the build backend.
dib supports multiple build backends. Currently, available backends are docker, kaniko, and buildkit. You can select the
backend to use with the --backend option. Note that docker and kaniko backends are deprecated and will be removed in a future release. buildkit is now the recommended and default backend.
Executor compatibility matrix
| Backend | Local | Docker | Kubernetes |
|---|---|---|---|
| Docker | ✔ | ✗ | ✗ |
| Kaniko | ✗ | ✔ | ✔ |
| BuildKit | ✔ | ✗ | ✔ |
Docker
Deprecated: The Docker backend is deprecated and will be removed in a future release. Please use the BuildKit backend instead.
The docker backend uses Docker behind the scenes, and runs docker build You need to have
the Docker CLI installed locally to use this backend.
Authentication
The Docker Daemon requires authentication to pull and push images from private registries. Run the
docker login command to authenticate.
Authentication settings are stored in a config.json file located by default in $HOME/.docker/.
If you need to provide a different configuration, you can set the DOCKER_CONFIG variable to the path to another
directory, which should contain a config.json file.
Remote Daemon
If you want to set a custom docker daemon host, you can set the DOCKER_HOST environment variable. The builds will then
run on the remote host instead of using the local Docker daemon.
BuildKit
If available, dib will try to use the BuildKit engine to build images, which is faster than the default Docker build engine.
Kaniko
Deprecated: The Kaniko backend is deprecated and will be removed in a future release. Please use the BuildKit backend instead.
Kaniko offers a way to build container images inside a container or Kubernetes cluster, without the security tradeoff of running a docker daemon container with host privileges.
BuildKit
As Kaniko must run in a container, it requires Docker when running local builds as it uses the docker executor.
See the kaniko section in the configuration reference.
BuildKit
BuildKit is a toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner. It provides a more efficient, cache-aware, and concurrent build engine compared to the traditional Docker build.
Authentication
BuildKit uses the same authentication mechanism as Docker. Run the docker login command to authenticate with your registry.
Local Builds
For local builds, BuildKit requires the buildctl binary to be installed on your system and buildkitd daemon to be running. You can install BuildKit by following the instructions in the official documentation.
Kubernetes Builds
For Kubernetes builds, dib will create a pod with the BuildKit image and execute the build inside it. This requires proper configuration of Kubernetes access and Docker registry credentials.
BuildKit Host
You can specify a custom BuildKit daemon host using the --buildkit-host option or by setting the BUILDKIT_HOST environment variable.
See the buildkit section in the configuration reference.