Comment utiliser la commande docker buildx history logs pour visualiser les logs de build

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce lab, vous apprendrez à utiliser la commande docker buildx history logs pour consulter les journaux de vos builds Docker. Vous commencerez par construire une image Docker et examiner son historique afin de comprendre le processus de build et d'identifier la référence de build (build reference).

Vous utiliserez ensuite cette référence de build pour récupérer et afficher les journaux détaillés d'un build spécifique. Enfin, vous explorerez comment visualiser ces journaux de build avec différents types de sortie de progression (progress output), ce qui vous permettra d'analyser l'exécution du build et de résoudre d'éventuels problèmes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/logs -.-> lab-555052{{"Comment utiliser la commande docker buildx history logs pour visualiser les logs de build"}} docker/images -.-> lab-555052{{"Comment utiliser la commande docker buildx history logs pour visualiser les logs de build"}} docker/build -.-> lab-555052{{"Comment utiliser la commande docker buildx history logs pour visualiser les logs de build"}} end

Construire une image et consulter son historique

Dans cette étape, vous apprendrez à construire une image Docker à partir d'un Dockerfile et à consulter son historique. L'historique montre les couches qui composent l'image ainsi que les commandes utilisées pour créer chaque couche.

Commencez par créer un Dockerfile simple dans votre répertoire ~/project. Ce Dockerfile créera une image basée sur l'image ubuntu et installera le paquet curl.

cd ~/project
nano Dockerfile

Ajoutez le contenu suivant au Dockerfile :

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl

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

Maintenant, construisons l'image Docker à l'aide de la commande docker build. Nous allons étiqueter l'image avec le nom my-ubuntu-curl 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-ubuntu-curl:latest .

Vous verrez une sortie indiquant le processus de build, montrant l'exécution de chaque étape définie dans le Dockerfile.

Une fois le build terminé, vous pouvez consulter l'historique de l'image avec la commande docker history.

docker history my-ubuntu-curl:latest

La sortie affichera un tableau avec des informations sur chaque couche, incluant l'ID de la couche, sa date de création, sa taille et la commande utilisée pour la créer. Cet historique est utile pour comprendre comment une image a été construite et à des fins de débogage.

Trouver la référence de build dans l'historique

Dans l'étape précédente, vous avez construit une image Docker et consulté son historique. La sortie de l'historique inclut une colonne "BUILD REFERENCE". Cette référence est un identifiant unique du processus de build qui a créé l'image. Elle est différente de l'ID d'image et est spécifiquement liée au build lui-même, pas aux couches résultantes de l'image.

Examinons à nouveau l'historique pour identifier la référence de build.

docker history my-ubuntu-curl:latest

Dans la sortie, recherchez la ligne correspondant au processus de build. Il s'agira généralement de la première ligne (hormis les couches de l'image de base) et contiendra une valeur dans la colonne "BUILD REFERENCE". Cette valeur est une longue chaîne de caractères.

Par exemple, la sortie pourrait ressembler à ceci (les valeurs exactes différeront) :

IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT   BUILD REFERENCE
a1b2c3d4e5f6   2 hours ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
g7h8i9j0k1l2   2 hours ago    /bin/sh -c #(nop) ADD file:abcdef1234567890...   73.9MB
m3n4o5p6q7r8   2 hours ago    /bin/sh -c apt-get update && apt-get install...   30MB      buildkit.dockerfile.v0   buildkit:abcdef1234567890abcdef1234567890

Dans cet exemple, la référence de build est buildkit:abcdef1234567890abcdef1234567890. Notez que la référence de build commence souvent par buildkit: suivi d'un identifiant unique.

Vous aurez besoin de cette référence de build dans l'étape suivante pour consulter les journaux du processus de build spécifique. Copiez la référence de build depuis votre sortie.

Consulter les logs d'un build spécifique à l'aide de sa référence

Dans l'étape précédente, vous avez identifié la référence de build depuis l'historique de l'image. Cette référence vous permet de consulter les logs détaillés de ce processus de build spécifique. Cela est particulièrement utile pour déboguer des échecs de build ou comprendre la sortie exacte générée pendant le build.

Pour consulter les logs d'un build spécifique, utilisez la commande docker buildx logs suivie de la référence de build. N'oubliez pas de remplacer YOUR_BUILD_REFERENCE par la véritable référence de build trouvée à l'étape précédente.

docker buildx logs YOUR_BUILD_REFERENCE

Par exemple, si votre référence de build était buildkit:abcdef1234567890abcdef1234567890, la commande serait :

docker buildx logs buildkit:abcdef1234567890abcdef1234567890

L'exécution de cette commande affichera la sortie complète du processus de build, y compris la sortie de chaque instruction RUN dans votre Dockerfile. Vous verrez la sortie de apt-get update et apt-get install -y curl telles qu'elles ont été exécutées pendant la construction de l'image.

Cela fournit une vue beaucoup plus détaillée du processus de build par rapport au résumé affiché pendant la commande docker build.

Visualiser les logs avec différents types de sortie de progression

Dans cette étape, vous allez explorer différentes manières de visualiser la progression du build lors de la construction d'une image Docker. La commande docker build propose plusieurs options pour contrôler l'affichage de la progression du build.

Par défaut, docker build utilise une sortie de progression qui montre l'état de chaque étape pendant son exécution. Reconstruisons l'image pour revoir cette sortie par défaut.

docker build -t my-ubuntu-curl:latest .

Vous observerez la sortie familière montrant les étapes comme "Step 1/2", "Step 2/2", et le résultat de la commande RUN.

Maintenant, essayons un autre type de sortie de progression en utilisant le flag --progress. Le type plain affiche le processus de build dans un format plus verbeux, ligne par ligne, ce qui peut être utile pour voir exactement les commandes exécutées et leur sortie sans la barre de progression.

docker build --progress=plain -t my-ubuntu-curl:latest .

Comparez la sortie de cette commande avec la sortie par défaut. Vous verrez un journal plus détaillé de chaque action effectuée pendant le build.

Un autre type de sortie de progression utile est tty. C'est le comportement par défaut lors d'un build interactif dans un terminal et fournit une barre de progression dynamique. Cependant, le spécifier explicitement peut être utile dans certains scénarios de script.

docker build --progress=tty -t my-ubuntu-curl:latest .

Vous devriez voir à nouveau la barre de progression interactive, similaire au build initial.

Comprendre ces différents types de sortie de progression vous permet de choisir la meilleure façon de surveiller vos builds Docker, que vous ayez besoin d'un résumé concis ou de logs détaillés pour le débogage.

Résumé

Dans ce lab, vous avez appris à construire une image Docker à partir d'un Dockerfile et à visualiser son historique à l'aide des commandes docker build et docker history. Vous avez créé un Dockerfile simple, construit une image taguée my-ubuntu-curl:latest, puis examiné l'historique pour comprendre les couches et commandes impliquées dans le processus de build.

Vous avez ensuite appris à identifier la référence de build unique depuis la sortie de docker history. Cette référence est cruciale pour accéder à des informations spécifiques liées au build, comme les logs de construction que vous explorerez dans les étapes suivantes.