Обзор драйверов

Драйверы Buildx — это конфигурации для того, как и где работает бэкенд BuildKit. Настройки драйверов являются настраиваемыми и позволяют осуществлять тонкий контроль над сборщиком. Buildx поддерживает следующие драйверы:

  • docker: использует библиотеку BuildKit, встроенную в демон Docker.

  • docker-container: создаёт выделенный контейнер BuildKit с помощью Docker.

  • kubernetes: создание стручков BuildKit в кластере Kubernetes.

  • remote: подключается напрямую к управляемому вручную демону BuildKit.

Разные драйверы поддерживают разные сценарии использования. Драйвер docker по умолчанию ориентирован на простоту и удобство использования. Он имеет ограниченную поддержку расширенных функций, таких как кэширование и форматы вывода, и не настраивается. Другие драйверы обеспечивают большую гибкость и лучше справляются с расширенными сценариями.

В следующей таблице приведены некоторые различия между драйверами.

Характеристика

docker

docker-container

kubernetes

remote

Автоматическая загрузка образа

Экспорт кэша

Только в линию

Тарбольный выход

Многоархивные образы

Конфигурация BuildKit

Внешнее управление

Список доступных строителей

Используйте docker buildx ls для просмотра экземпляров сборщика, доступных в вашей системе, и драйверов, которые они используют.

$ docker buildx ls
NAME/NODE       DRIVER/ENDPOINT      STATUS   BUILDKIT PLATFORMS
default         docker
  default       default              running  20.10.17 linux/amd64, linux/386

В зависимости от вашей конфигурации, вы можете обнаружить в списке несколько сборщиков, использующих драйвер Docker. Например, на системе, где запущена как установленная вручную версия dockerd, так и Docker Desktop, вы можете увидеть следующий результат docker buildx ls :

NAME/NODE       DRIVER/ENDPOINT STATUS  BUILDKIT PLATFORMS
default         docker
  default       default         running 20.10.17 linux/amd64, linux/386
desktop-linux * docker
  desktop-linux desktop-linux   running 20.10.17 linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

Это происходит потому, что сборщики драйверов Docker автоматически извлекаются из доступных Контексты Docker. Когда вы добавляете новые контексты с помощью docker context create , они появятся в вашем списке сборщиков buildx.

Звездочка ( * ) рядом с именем строителя означает, что это выбранный строитель, который используется по умолчанию, если вы не укажете строителя с помощью опции --builder.

Создание нового строителя

Используйте команду docker buildx create для создания конструктора и указывает драйвер с помощью опции --driver.

$ docker buildx create --name=<builder-name> --driver=<driver> --driver-opt=<driver-options>

Это создаст новый экземпляр конструктора с одним узлом сборки. После создания нового строителя вы также можете добавлять к нему новые узлы .

Чтобы использовать удаленный узел для своих построителей, вы можете установить переменную окружения DOCKER_HOST или указывает имя удаленного контекста при создании построителя.

Переключение между строителями

Для переключения между разными конструкторами используйте команду docker buildx use <name>. После выполнения этой команды команды сборки будут автоматически использовать данный построитель.

Что дальше

Читает о каждом из драйверов Buildx, чтобы узнать, как они работают и как их использовать: