Обзор драйверов
Драйверы Buildx — это конфигурации для того, как и где работает бэкенд BuildKit. Настройки драйверов являются настраиваемыми и позволяют осуществлять тонкий контроль над сборщиком. Buildx поддерживает следующие драйверы:
docker
: использует библиотеку BuildKit, встроенную в демон Docker.docker-container
: создаёт выделенный контейнер BuildKit с помощью Docker.kubernetes
: создание стручков BuildKit в кластере Kubernetes.remote
: подключается напрямую к управляемому вручную демону BuildKit.
Разные драйверы поддерживают разные сценарии использования. Драйвер docker
по умолчанию ориентирован на простоту и удобство использования. Он имеет ограниченную поддержку расширенных функций, таких как кэширование и форматы вывода, и не настраивается. Другие драйверы обеспечивают большую гибкость и лучше справляются с расширенными сценариями.
В следующей таблице приведены некоторые различия между драйверами.
Характеристика |
|
|
|
|
---|---|---|---|---|
Автоматическая загрузка образа |
✅ |
|||
Экспорт кэша |
Только в линию |
✅ |
✅ |
✅ |
Тарбольный выход |
✅ |
✅ |
✅ |
|
Многоархивные образы |
✅ |
✅ |
✅ |
|
Конфигурация 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, чтобы узнать, как они работают и как их использовать: