BuildKit

BuildKit — движок сборки образов. Замена старому docker build. Встроен в Docker Desktop и docker buildx. Параллельная сборка, кеш через registry, работает без docker-daemon.

Ключевые фичи

Активация

# Docker 23+ — дефолт
docker build .

# явно
DOCKER_BUILDKIT=1 docker build .

# buildx (мультиплатформа)
docker buildx build --platform linux/amd64,linux/arm64 -t img .

Кеш-mount

# syntax=docker/dockerfile:1
FROM golang:1.22 AS build
WORKDIR /app
COPY go.mod go.sum ./
RUN --mount=type=cache,target=/root/.cache/go-build \
    --mount=type=cache,target=/go/pkg/mod \
    go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build \
    go build -o /app/bin

Кеш модулей живёт МЕЖДУ сборками, но не попадает в образ.

Secrets

RUN --mount=type=secret,id=github_token \
    curl -H "Authorization: token $(cat /run/secrets/github_token)" ...

docker build --secret id=github_token,src=./token.txt .

SSH forwarding

RUN --mount=type=ssh git clone git@github.com:private/repo
docker build --ssh default .

Registry-cache

docker buildx build \
  --cache-from=type=registry,ref=myreg/app:cache \
  --cache-to=type=registry,ref=myreg/app:cache,mode=max \
  -t myreg/app:latest .

Multi-arch без эмуляции

QEMU медленный. Для скорости — native builders: buildx-node на ARM плюс x86, buildx распределит.

См. также

← на главную