Ответ
BuildKit — это современный, высокопроизводительный бэкенд для сборки Docker-образов, который заменил старый «legacy builder». Он включен по умолчанию в Docker Engine начиная с версии 23.0.
Ключевые преимущества для DevOps-инженеров:
- Параллельная сборка: Независимые инструкции
RUNи этапы (stage) выполняются параллельно, что значительно ускоряет сборку. - Улучшенное кэширование: Кэш работает на уровне графа зависимостей (LLB), а не просто по хешу строки инструкции. Это позволяет переиспользовать кэш даже при изменении порядка команд или промежуточных файлов.
- Секреты (Secrets): Безопасная передача секретов (пароли, токены) во время сборки без сохранения их в финальном образе или истории слоев.
# syntax=docker/dockerfile:1 FROM alpine RUN --mount=type=secret,id=mysecret,target=/run/secrets/mysecret export API_KEY=$(cat /run/secrets/mysecret) && ./configure-script.sh - Монтирование контекста (Mount): Позволяет монтировать каталоги (например, кэш пакетов) только на этап сборки, не увеличивая размер образа.
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt - Расширяемость: Поддержка внешних frontend-ов (например, для сборки из файлов
docker-compose.yml).
Активация и использование:
# Убедиться, что BuildKit включен (по умолчанию в новых версиях)
export DOCKER_BUILDKIT=1
# Сборка с использованием новых функций
docker build --secret id=mysecret,src=./api_key.txt -t myapp:latest .
# Просмотр деталей сборки в формате
docker build --progress=plain .
BuildKit — это стандарт для эффективной и безопасной сборки образов в современных CI/CD-пайплайнах.