Builders
Un builder est un démon BuildKit que vous pouvez utiliser pour exécuter vos builds. BuildKit est le moteur de construction qui résout les étapes de construction dans un Dockerfile pour produire une image de conteneur ou d'autres artefacts.
Vous pouvez créer et gérer des builders, les inspecter et même vous connecter à des builders exécutés à distance. Vous interagissez avec les builders à l'aide de la CLI Docker.
Builder par défaut
Docker Engine crée automatiquement un builder qui devient le backend par défaut pour vos builds. Ce builder utilise la bibliothèque BuildKit fournie avec le démon. Ce builder ne nécessite aucune configuration.
Le builder par défaut est directement lié au démon Docker et à son
contexte. Si vous modifiez le
contexte Docker, votre builder default
fait référence au nouveau contexte Docker.
Pilotes de build
Buildx implémente un concept de pilotes de build pour faire référence à
différentes configurations de builder. Le builder par défaut créé par le démon
utilise le pilote docker
.
Buildx prend en charge les pilotes de build suivants :
docker
: utilise la bibliothèque BuildKit fournie avec le démon Docker.docker-container
: crée un conteneur BuildKit dédié à l'aide de Docker.kubernetes
: crée des pods BuildKit dans un cluster Kubernetes.remote
: se connecte directement à un démon BuildKit géré manuellement.
Builder sélectionné
Le builder sélectionné fait référence au builder qui est utilisé par défaut lorsque vous exécutez des commandes de build.
Lorsque vous exécutez un build, ou interagissez avec des builders d'une manière ou d'une autre à l'aide de la CLI,
vous pouvez utiliser l'indicateur facultatif --builder
, ou la variable d'environnement
BUILDX_BUILDER
variable d'environnement,
pour spécifier un builder par son nom. Si vous ne spécifiez pas de builder,
le builder sélectionné est utilisé.
Utilisez la commande docker buildx ls
pour voir les instances de builder disponibles.
L'astérisque (*
) à côté d'un nom de builder indique le builder sélectionné.
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
default * docker
default default running v0.11.6 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
my_builder docker-container
my_builder0 default running v0.11.6 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
Sélectionner un builder différent
Pour basculer entre les builders, utilisez la commande docker buildx use <name>
.
Après avoir exécuté cette commande, le builder que vous spécifiez est automatiquement sélectionné lorsque vous appelez des builds.
Différence entre docker build
et docker buildx build
Même si docker build
est un alias pour docker buildx build
, il existe des
différences subtiles entre les deux commandes. Avec Buildx, le client de build et
le démon (BuildKit) sont découplés. Cela signifie que vous pouvez utiliser plusieurs
builders à partir d'un seul client, même distants.
La commande docker build
utilise toujours par défaut le builder par défaut qui
est fourni avec Docker Engine, pour assurer la rétrocompatibilité avec
les anciennes versions de la CLI Docker. La commande docker buildx build
, d'autre part,
vérifie si vous avez défini un builder différent comme builder par défaut
avant d'envoyer votre build à BuildKit.
Pour utiliser la commande docker build
avec un builder non par défaut, vous devez soit :
-
Spécifier explicitement le builder, en utilisant l'indicateur
--builder
ou la variable d'environnementBUILDX_BUILDER
:$ BUILDX_BUILDER=my_builder docker build . $ docker build --builder my_builder .
-
Configurer Buildx comme client par défaut en exécutant la commande suivante :
$ docker buildx install
Cela met à jour votre fichier de configuration de la CLI Docker pour vous assurer que toutes vos commandes liées au build sont acheminées via Buildx.
TipPour annuler cette modification, exécutez
docker buildx uninstall
.
En général, nous vous recommandons d'utiliser la commande docker buildx build
lorsque
vous souhaitez utiliser des builders personnalisés. Cela garantit que votre configuration de builder
sélectionné est interprétée correctement.
Informations supplémentaires
- Pour plus d'informations sur la façon d'interagir avec et de gérer les builders, consultez Gérer les builders
- Pour en savoir plus sur les différents types de builders, consultez Pilotes de build