BuildKit & Advanced Build Features
Use Docker BuildKit for advanced builds: multi-platform images, remote caching, build secrets, SSH forwarding, and buildx commands.
Build
Detailed Explanation
Docker BuildKit
BuildKit is the next-generation build engine for Docker. It's the default since Docker 23.0.
Enabling BuildKit
# Already default in modern Docker, but can be explicit:
DOCKER_BUILDKIT=1 docker build .
Multi-Platform Builds
Build images for multiple CPU architectures:
# Create and use a builder
docker buildx create --use --name mybuilder
docker buildx inspect --bootstrap
# Build for multiple platforms
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t my-app:v1.0 \
--push .
Build Secrets
Pass secrets without leaking them in image layers:
# Dockerfile
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci
docker build --secret id=npmrc,src=$HOME/.npmrc .
SSH Forwarding
Forward SSH agent for private repository access during builds:
RUN --mount=type=ssh git clone git@github.com:private/repo.git
docker build --ssh default .
Cache Management
# Use registry as cache source
docker buildx build \
--cache-from type=registry,ref=myregistry/my-app:cache \
--cache-to type=registry,ref=myregistry/my-app:cache,mode=max \
-t my-app:v1.0 .
# Use local cache directory
docker buildx build \
--cache-from type=local,src=/tmp/buildcache \
--cache-to type=local,dest=/tmp/buildcache \
-t my-app:v1.0 .
Build Arguments
docker build \
--build-arg NODE_VERSION=20 \
--build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
-t my-app:v1.0 .
Use Case
Building multi-architecture images for ARM and x86 deployments, optimizing CI/CD build times with registry-based caching, securely passing NPM tokens and SSH keys during builds, and managing complex build pipelines.