Comment utiliser la commande docker image history pour inspecter les couches d'image

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 history pour inspecter les couches d'une image Docker. Comprendre les couches d'image et leurs commandes de création est essentiel pour déboguer et optimiser vos images Docker.

Vous commencerez par visualiser l'historique de base d'une image, puis explorerez les options pour désactiver la troncation de la sortie afin d'obtenir une visibilité complète des commandes, et utiliserez le mode de sortie silencieux pour une vue concise. De plus, vous apprendrez comment formater la sortie de l'historique en utilisant des templates Go pour des rapports personnalisés et comment afficher l'historique des images construites pour des plateformes spécifiques.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/inspect -.-> lab-555153{{"Comment utiliser la commande docker image history pour inspecter les couches d'image"}} docker/pull -.-> lab-555153{{"Comment utiliser la commande docker image history pour inspecter les couches d'image"}} docker/images -.-> lab-555153{{"Comment utiliser la commande docker image history pour inspecter les couches d'image"}} end

Afficher l'historique d'une image Docker

Dans cette étape, vous apprendrez comment visualiser l'historique d'une image Docker. L'historique d'une image vous montre les couches qui la composent ainsi que les commandes utilisées pour créer chaque couche. Cela est utile pour comprendre comment une image a été construite et pour déboguer d'éventuels problèmes.

Commencez par télécharger une image Docker que nous pourrons inspecter. Nous utiliserons l'image ubuntu pour cet exemple.

docker pull ubuntu

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement. Une fois le téléchargement terminé, vous pouvez visualiser l'historique de l'image en utilisant la commande docker history suivie du nom ou de l'ID de l'image.

docker history ubuntu

La sortie de la commande docker history affichera un tableau avec plusieurs colonnes :

  • IMAGE : L'ID de la couche d'image
  • CREATED : La date de création de la couche
  • CREATED BY : La commande utilisée pour créer la couche
  • SIZE : La taille de la couche
  • COMMENT : Tout commentaire associé à la couche

Cet historique vous permet de retracer les étapes de construction de l'image ubuntu, en montrant chaque commande exécutée et la couche résultante.

Afficher l'historique sans troncation de sortie

À l'étape précédente, vous avez visualisé l'historique de l'image ubuntu. Vous avez peut-être remarqué qu'une partie de la sortie, notamment les commandes dans la colonne CREATED BY, étaient tronquées. Ce comportement par défaut de docker history permet de maintenir la sortie concise.

Pour afficher la sortie complète sans troncation, vous pouvez utiliser l'option --no-trunc avec la commande docker history.

Essayons cette option avec l'image ubuntu.

docker history --no-trunc ubuntu

Vous devriez maintenant voir les commandes complètes utilisées pour créer chaque couche de l'image ubuntu. Cela peut s'avérer très utile lorsque vous avez besoin de voir les détails exacts de la construction d'une couche, particulièrement pour des images complexes avec des commandes de build longues.

Comparez la sortie de cette commande avec celle de l'étape précédente pour observer la différence dans la colonne CREATED BY.

Afficher l'historique en mode silencieux

Dans les étapes précédentes, vous avez vu l'historique détaillé de l'image ubuntu, incluant les commandes utilisées pour créer chaque couche. Parfois, vous pourriez n'être intéressé que par les IDs des couches, sans toutes les autres informations.

Pour obtenir une sortie plus concise affichant uniquement les IDs d'images, vous pouvez utiliser l'option -q ou --quiet avec la commande docker history.

Visualisons l'historique de l'image ubuntu en mode silencieux.

docker history -q ubuntu

La sortie affichera maintenant uniquement les IDs des couches, un par ligne. Cela peut être utile lorsque vous avez besoin d'obtenir rapidement une liste d'IDs de couches pour des scripts ou d'autres usages.

Comparez cette sortie avec les précédentes pour constater comment l'option -q simplifie les informations affichées.

Formater la sortie de l'historique avec un template Go

En plus des formats de sortie par défaut et silencieux, la commande docker history vous permet de formater la sortie à l'aide d'un template Go. Cela vous offre un contrôle précis sur les informations affichées et leur présentation.

L'option --format permet de spécifier le template Go. Vous pouvez accéder à différents champs de l'historique d'image en utilisant la syntaxe des templates. Parmi les champs courants, on trouve .ID, .Created, .CreatedBy, .Size et .Comment.

Essayons de formater la sortie pour n'afficher que l'ID d'image et la commande utilisée pour créer la couche, séparés par une tabulation.

docker history --format "{{.ID}}\t{{.CreatedBy}}" ubuntu

Dans ce template :

  • {{.ID}} fait référence à l'ID d'image de la couche
  • \t est un caractère de tabulation pour la séparation
  • {{.CreatedBy}} fait référence à la commande utilisée pour créer la couche

Vous pouvez expérimenter avec différents champs et formats pour obtenir la sortie souhaitée. Par exemple, pour inclure la taille :

docker history --format "{{.ID}}\t{{.Size}}\t{{.CreatedBy}}" ubuntu

L'utilisation de templates Go offre un moyen puissant d'extraire des informations spécifiques de l'historique d'image à des fins de scripting ou de reporting.

Afficher l'historique pour une plateforme spécifique

Les images Docker peuvent être construites pour différentes architectures et systèmes d'exploitation. Lorsqu'une image est disponible pour plusieurs plateformes, vous pouvez souhaiter visualiser l'historique pour une plateforme spécifique.

La commande docker history vous permet de spécifier la plateforme cible à l'aide du flag --platform. Le format de la plateforme est généralement os/architecture. Par exemple : linux/amd64 ou linux/arm64.

Visualisons l'historique de l'image ubuntu spécifiquement pour la plateforme linux/amd64 :

docker history --platform linux/amd64 ubuntu

Le résultat affichera l'historique de l'image ubuntu construite pour l'architecture linux/amd64. Si l'image n'est pas disponible pour la plateforme spécifiée, vous pourriez voir une erreur ou un historique différent selon la façon dont l'image a été construite.

Cette fonctionnalité est particulièrement utile lorsque vous travaillez avec des images multi-architectures et que vous devez inspecter le processus de construction pour un environnement cible spécifique.

Résumé

Dans ce lab, vous avez appris à utiliser la commande docker history pour inspecter les couches d'une image Docker. Vous avez commencé par télécharger l'image ubuntu puis visualisé son historique, qui affiche des informations sur chaque couche incluant l'ID de l'image, sa date de création, la commande utilisée pour la créer et sa taille. Cela fournit une vue claire du processus de construction de l'image.

Vous avez ensuite exploré des options pour modifier la sortie de docker history. Vous avez appris à désactiver la troncation de sortie avec le flag --no-trunc pour voir les commandes complètes utilisées pour construire chaque couche. Ceci est essentiel pour comprendre les étapes exactes de la création d'image. Le lab couvre également l'affichage de l'historique en mode silencieux avec le flag -q pour ne montrer que les IDs d'images, le formatage de la sortie avec un template Go pour des vues personnalisées, et l'affichage de l'historique pour une plateforme spécifique avec le flag --platform.