⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Aperçu de Docker Build

Table des matières

Docker Build implémente une architecture client-serveur, où :

  • Client : Buildx est le client et l'interface utilisateur pour exécuter et gérer les builds.
  • Serveur : BuildKit est le serveur, ou constructeur, qui gère l'exécution du build.

Lorsque vous lancez un build, le client Buildx envoie une demande de build au backend BuildKit. BuildKit résout les instructions de build et exécute les étapes de build. La sortie du build est soit renvoyée au client ou téléchargée vers un registre, tel que Docker Hub.

Buildx et BuildKit sont tous deux installés avec Docker Desktop et Docker Engine prêts à l'emploi. Lorsque vous invoquez la commande docker build, vous utilisez Buildx pour exécuter un build en utilisant le BuildKit par défaut fourni avec Docker.

Buildx

Buildx est l'outil CLI que vous utilisez pour exécuter les builds. La commande docker build est un wrapper autour de Buildx. Lorsque vous invoquez docker build, Buildx interprète les options de build et envoie une demande de build au backend BuildKit.

Le client Buildx peut faire plus que simplement exécuter des builds. Vous pouvez également utiliser Buildx pour créer et gérer les backends BuildKit, appelés constructeurs. Il prend également en charge des fonctionnalités pour gérer les images dans les registres, et pour exécuter plusieurs builds simultanément.

Docker Buildx est installé par défaut avec Docker Desktop. Vous pouvez également construire le plugin CLI à partir du code source, ou récupérer un binaire depuis le dépôt GitHub et l'installer manuellement. Voir Buildx README sur GitHub pour plus d'informations.

Note

Bien que docker build invoque Buildx sous le capot, il y a des différences subtiles entre cette commande et la commande canonique docker buildx build. Pour plus de détails, voir Différence entre docker build et docker buildx build.

BuildKit

BuildKit est le processus démon qui exécute les charges de travail de build.

Une exécution de build commence par l'invocation d'une commande docker build. Buildx interprète votre commande de build et envoie une demande de build au backend BuildKit. La demande de build inclut :

  • Le Dockerfile
  • Les arguments de build
  • Les options d'export
  • Les options de mise en cache

BuildKit résout les instructions de build et exécute les étapes de build. Pendant que BuildKit exécute le build, Buildx surveille le statut du build et affiche le progrès dans le terminal.

Si le build nécessite des ressources du client, telles que des fichiers locaux ou des secrets de build, BuildKit demande les ressources dont il a besoin à Buildx.

C'est une façon dont BuildKit est plus efficace comparé au constructeur legacy utilisé dans les versions antérieures de Docker. BuildKit ne demande que les ressources dont le build a besoin quand elles sont nécessaires. Le constructeur legacy, en comparaison, prend toujours une copie du système de fichiers local.

Exemples de ressources que BuildKit peut demander à Buildx incluent :

  • Contextes de build du système de fichiers local
  • Secrets de build
  • Sockets SSH
  • Jetons d'authentification de registre

Pour plus d'informations sur BuildKit, voir BuildKit.