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.

Try It — Docker CLI Reference

Open full tool