Comment utiliser docker buildx history export pour exporter l'historique de build

DockerBeginner
Pratiquer maintenant

Introduction

Dans ce lab, vous apprendrez à utiliser la commande docker buildx history export pour gérer et exporter l'historique de vos builds Docker. Nous commencerons par construire une image Docker simple et examinerons son historique de build à l'aide de la commande docker history.

Ensuite, vous apprendrez comment exporter l'historique de build d'une image spécifique vers un fichier. Enfin, nous explorerons comment exporter tous les enregistrements de build pour un builder donné, fournissant ainsi une vue d'ensemble complète de vos activités de build. Ce lab vous permettra d'acquérir les compétences nécessaires pour suivre et gérer efficacement vos processus de build d'images Docker.

Construire une image simple et visualiser son historique

Dans cette étape, nous allons apprendre à construire une image Docker simple et à visualiser son historique. La construction d'une image Docker implique la création d'un Dockerfile, qui est un fichier texte contenant toutes les commandes qu'un utilisateur pourrait exécuter en ligne de commande pour assembler une image.

Tout d'abord, naviguez vers le répertoire ~/project si vous n'y êtes pas déjà.

cd ~/project

Maintenant, créons un Dockerfile simple. Nous allons créer un fichier nommé Dockerfile dans le répertoire ~/project.

nano Dockerfile

Ajoutez le contenu suivant au Dockerfile :

FROM ubuntu:latest
RUN echo "Hello, Docker!" > /app/hello.txt
CMD ["cat", "/app/hello.txt"]

Ce Dockerfile effectue les opérations suivantes :

  • FROM ubuntu:latest : Cette ligne spécifie l'image de base pour notre nouvelle image. Nous utilisons la dernière version de l'image Ubuntu depuis Docker Hub.
  • RUN echo "Hello, Docker!" > /app/hello.txt : Cette ligne exécute une commande pendant le processus de construction de l'image. Elle crée un répertoire /app et écrit le texte "Hello, Docker!" dans un fichier nommé hello.txt à l'intérieur de ce répertoire.
  • CMD ["cat", "/app/hello.txt"] : Cette ligne spécifie la commande par défaut à exécuter lorsqu'un conteneur est démarré à partir de cette image. Elle exécutera la commande cat /app/hello.txt, qui affichera le contenu du fichier hello.txt.

Enregistrez le fichier et quittez l'éditeur nano (appuyez sur Ctrl + X, puis Y, puis Entrée).

Maintenant, construisons l'image Docker à l'aide de la commande docker build. Nous allons étiqueter l'image avec le nom my-hello-image et le tag latest. Le . à la fin de la commande indique que le Dockerfile se trouve dans le répertoire courant.

docker build -t my-hello-image:latest .

Vous verrez une sortie indiquant le processus de construction, montrant chaque étape en cours d'exécution.

Une fois l'image construite, vous pouvez visualiser l'historique de l'image à l'aide de la commande docker history. Cette commande affiche les couches qui composent l'image et les commandes utilisées pour créer chaque couche.

docker history my-hello-image:latest

La sortie affichera un tableau avec des informations sur chaque couche, y compris l'ID de la couche, la commande utilisée, la date de création et la taille. Cet historique est utile pour comprendre comment une image a été construite et pour déboguer les problèmes de construction.

Exporter l'historique de build vers un fichier

Dans l'étape précédente, nous avons visualisé l'historique de build de notre image Docker directement dans le terminal. Dans cette étape, nous allons apprendre comment exporter cet historique vers un fichier pour une analyse ultérieure ou un partage.

Nous pouvons rediriger la sortie de la commande docker history vers un fichier en utilisant l'opérateur de redirection standard >. Exportons l'historique de l'image my-hello-image:latest vers un fichier nommé history.txt dans le répertoire ~/project.

Assurez-vous d'être dans le répertoire ~/project :

cd ~/project

Maintenant, exécutez la commande suivante pour exporter l'historique :

docker history my-hello-image:latest > history.txt

Cette commande exécutera docker history my-hello-image:latest et, au lieu d'afficher le résultat à l'écran, elle écrira la sortie dans le fichier history.txt.

Vous pouvez vérifier que le fichier a été créé et contient l'historique de build en visualisant son contenu avec la commande cat :

cat history.txt

Vous devriez voir les mêmes informations d'historique de build que dans l'étape précédente, mais maintenant stockées dans le fichier history.txt. Ce fichier peut être facilement partagé ou utilisé à des fins de documentation.

Exporter l'historique de build vers un fichier est une pratique utile pour conserver des traces de la construction de vos images Docker, ce qui peut s'avérer précieux pour le débogage, l'audit et la collaboration.

Exporter tous les enregistrements de build du builder

Dans les étapes précédentes, nous avons construit une image Docker et exporté son historique. Docker BuildKit, le builder par défaut de Docker, conserve des enregistrements de toutes les opérations de build. Dans cette étape, nous allons apprendre comment exporter tous ces enregistrements de build.

Pour exporter tous les enregistrements de build, nous pouvons utiliser la commande docker buildx build avec le flag --metadata-file. Ce flag nous permet de spécifier un fichier où les métadonnées de build, y compris les enregistrements de build, seront écrites au format JSON.

Tout d'abord, assurez-vous d'être dans le répertoire ~/project :

cd ~/project

Maintenant, reconstruisons l'image, mais cette fois nous exporterons les métadonnées de build vers un fichier nommé build-records.json. Nous utiliserons le même Dockerfile que nous avons créé dans la première étape.

docker buildx build --metadata-file build-records.json -t my-hello-image:latest .

La commande docker buildx build fait partie du plugin Docker Buildx, qui offre des capacités de build avancées. Le flag --metadata-file build-records.json indique à BuildKit d'écrire les métadonnées de build dans le fichier spécifié.

Une fois le build terminé, un fichier nommé build-records.json sera créé dans le répertoire ~/project. Ce fichier contient des informations détaillées sur le processus de build au format JSON.

Vous pouvez visualiser le contenu du fichier build-records.json avec la commande cat :

cat build-records.json

Le résultat sera un objet JSON contenant divers détails sur le build, y compris des informations sur les étapes de build, l'image résultante et d'autres métadonnées. Cet enregistrement complet peut être précieux pour des analyses avancées, l'automatisation et l'intégration avec d'autres outils.

L'exportation des enregistrements de build fournit une vue plus détaillée du processus de build comparé au simple historique d'image, offrant des insights sur l'exécution de chaque étape de build et les dépendances impliquées.

Résumé

Dans ce lab, nous avons appris à construire une image Docker simple en créant un Dockerfile contenant les instructions pour le processus de build, notamment :

  • La spécification d'une image de base
  • L'exécution de commandes pendant le build
  • La définition de la commande par défaut pour les conteneurs

Nous avons ensuite utilisé la commande docker build pour créer l'image et l'avons taguée pour une identification facile.

Après la construction de l'image, nous avons exploré comment visualiser son historique à l'aide de la commande docker history, qui fournit des informations sur les couches et les commandes utilisées pour construire l'image. Le lab nous a ensuite guidés pour :

  1. Exporter l'historique de build d'une image spécifique vers un fichier en utilisant docker buildx history export
  2. Exporter tous les enregistrements de build pour le builder actuel

Ces étapes ont démontré comment préserver et examiner les détails des builds.