Comment utiliser la commande docker inspect pour obtenir des informations détaillées

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 laboratoire, vous apprendrez à utiliser efficacement la commande docker inspect pour récupérer des informations détaillées sur les objets Docker, en particulier les conteneurs. Vous commencerez par inspecter un conteneur et comprendre la sortie JSON par défaut complète fournie par la commande.

En vous appuyant sur cela, vous explorerez ensuite comment formater la sortie à l'aide de la syntaxe de templating Go pour extraire des points de données spécifiques, comme l'adresse IP d'un conteneur. Le laboratoire couvrira également comment inspecter la taille d'un conteneur et montrera comment inspecter différents types d'objets Docker autres que les conteneurs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} docker/ps -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} docker/inspect -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} docker/pull -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} docker/images -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} docker/volume -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} docker/network -.-> lab-555165{{"Comment utiliser la commande docker inspect pour obtenir des informations détaillées"}} end

Inspecter un conteneur et comprendre la sortie par défaut

Dans cette étape, vous apprendrez à inspecter un conteneur Docker et à comprendre la sortie par défaut. La commande docker inspect fournit des informations détaillées sur les objets Docker, notamment les conteneurs, les images, les réseaux et les volumes. Par défaut, elle retourne un tableau JSON contenant les détails de configuration, l'état et d'autres métadonnées.

Tout d'abord, téléchargeons une simple image pour travailler. Nous utiliserons l'image hello-world.

docker pull hello-world

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement et d'extraction.

Maintenant, exécutons un conteneur à partir de cette image.

docker run hello-world

Cette commande exécute le conteneur hello-world, qui affiche un message puis se termine.

Pour inspecter le conteneur qui vient de s'exécuter, vous avez besoin de son ID ou de son nom. Vous pouvez trouver l'ID du dernier conteneur arrêté en utilisant docker ps -a.

docker ps -a

Recherchez le conteneur avec l'image hello-world et copiez son ID de conteneur (CONTAINER ID).

Maintenant, utilisez la commande docker inspect suivie de l'ID de conteneur que vous venez de copier. Remplacez <container_id> par l'ID réel.

docker inspect <container_id>

Cette commande affichera un grand document JSON contenant des informations détaillées sur le conteneur. Cette sortie par défaut inclut une grande variété de données, telles que l'état du conteneur, la configuration, les paramètres réseau et les volumes montés. Comprendre cette sortie est essentiel pour le débogage et la gestion des conteneurs.

Parcourez la sortie pour avoir une idée des informations disponibles. Vous verrez des champs tels que Id, State, Created, Path, Args, Config, NetworkSettings et bien d'autres.

Formater la sortie pour obtenir des informations spécifiques

Dans l'étape précédente, vous avez vu que docker inspect fournit une grande quantité d'informations au format JSON. Souvent, vous n'avez besoin que de parties spécifiques d'informations. Docker vous permet de formater la sortie en utilisant le flag --format et la syntaxe de templating Go.

Récupérons l'adresse IP d'un conteneur en cours d'exécution. Tout d'abord, nous avons besoin d'un conteneur en cours d'exécution. Nous utiliserons un simple conteneur nginx à cet effet.

Téléchargez l'image nginx :

docker pull nginx

Exécutez un conteneur nginx en mode détaché (-d) afin qu'il s'exécute en arrière - plan :

docker run -d nginx

Cette commande affichera l'ID du conteneur. Copiez cet ID.

Maintenant, utilisons docker inspect avec le flag --format pour obtenir l'adresse IP du conteneur. Remplacez <container_id> par l'ID de votre conteneur nginx en cours d'exécution.

docker inspect --format='{{.NetworkSettings.IPAddress}}' <container_id>

Le flag --format utilise la syntaxe de templating Go. Le point . fait référence à l'objet JSON de niveau supérieur. Nous naviguons dans la structure JSON en utilisant la notation par points : .NetworkSettings accède à l'objet NetworkSettings, et .IPAddress accède au champ IPAddress à l'intérieur de NetworkSettings. Les doubles accolades {{ }} indiquent une action de template Go.

Vous devriez voir l'adresse IP du conteneur affichée dans la console.

Vous pouvez extraire d'autres informations de la même manière. Par exemple, pour obtenir l'état du conteneur :

docker inspect --format='{{.State.Status}}' <container_id>

Cela affichera le statut actuel du conteneur (par exemple, "running" - en cours d'exécution).

Pour obtenir le nom du conteneur :

docker inspect --format='{{.Name}}' <container_id>

Cela affichera le nom du conteneur (par exemple, /vigilant_goldberg).

Vous pouvez également combiner plusieurs champs dans la chaîne de formatage. Par exemple, pour obtenir l'ID du conteneur et son statut :

docker inspect --format='ID: {{.Id}}, Status: {{.State.Status}}' <container_id>

Cela affichera l'ID et le statut dans un format plus lisible.

Expérimentez avec différents champs de la sortie JSON que vous avez vue dans l'étape précédente pour extraire les informations dont vous avez besoin.

Inspecter la taille d'un conteneur

Dans cette étape, vous apprendrez à inspecter la taille d'un conteneur Docker. Comprendre la taille des conteneurs est important pour gérer l'espace disque et optimiser la construction d'images.

La commande docker inspect peut fournir des informations sur la taille du conteneur, mais une façon plus directe de voir la taille des conteneurs en cours d'exécution consiste à utiliser la commande docker ps avec le flag --size.

Tout d'abord, assurez-vous d'avoir un conteneur en cours d'exécution. Si votre conteneur nginx de l'étape précédente est toujours en cours d'exécution, vous pouvez l'utiliser. Sinon, exécutez-le à nouveau :

docker run -d nginx

Maintenant, liste les conteneurs en cours d'exécution et incluez les informations sur leur taille :

docker ps --size

Vous verrez une colonne supplémentaire intitulée SIZE. Cette colonne affiche deux valeurs : la taille virtuelle et la taille sur disque.

  • Taille virtuelle (Virtual Size) : C'est la taille totale des couches d'image du conteneur plus la taille de la couche écrivable du conteneur.
  • Taille (Size) : C'est la taille de la couche écrivable du conteneur sur disque. Cette couche contient toutes les modifications apportées au système de fichiers du conteneur depuis son démarrage.

Pour les conteneurs qui se sont arrêtés, vous pouvez utiliser docker ps -a --size pour voir leur taille.

docker ps -a --size

Vous pouvez également obtenir des informations sur la taille en utilisant docker inspect et en formatant la sortie. Les informations sur la taille sont disponibles sous .SizeRw (taille de la couche écrivable) et .SizeRootFs (taille totale y compris les couches d'image).

Remplacez <container_id> par l'ID de l'un de vos conteneurs :

docker inspect --format='Writable Layer Size: {{.SizeRw}}, Total Size: {{.SizeRootFs}}' <container_id>

Cette commande affichera la taille de la couche écrivable et la taille totale du système de fichiers racine du conteneur.

Comprendre la différence entre la taille virtuelle et la taille sur disque est important. La taille virtuelle inclut les couches d'image partagées, tandis que la taille sur disque d'un conteneur en cours d'exécution reflète principalement les données uniques écrites dans la couche écrivable de ce conteneur spécifique.

Inspecter un type spécifique d'objet

Dans les étapes précédentes, vous avez utilisé docker inspect sur des conteneurs. Cependant, docker inspect est une commande polyvalente qui peut être utilisée pour inspecter différents objets Docker, notamment les images, les réseaux et les volumes.

Pour inspecter un objet autre qu'un conteneur, vous devez spécifier le type d'objet avant le nom ou l'ID de l'objet. La syntaxe est docker inspect <object_type> <object_name_or_id>.

Inspectons l'image nginx que vous avez téléchargée précédemment.

Tout d'abord, liste vos images pour obtenir l'ID ou le nom de l'image :

docker images

Trouvez l'image nginx et notez son REPOSITORY, TAG ou IMAGE ID.

Maintenant, inspectez l'image nginx. Vous pouvez utiliser le nom et le tag de l'image (par exemple, nginx:latest) ou l'ID de l'image. Remplacez <image_name_or_id> par la valeur appropriée.

docker inspect image <image_name_or_id>

Cela affichera des informations détaillées sur l'image nginx, y compris ses couches, sa configuration et ses métadonnées. Notez que la structure de la sortie est différente de celle de l'inspection d'un conteneur, car elle reflète les propriétés d'une image.

Ensuite, inspectons un réseau Docker. Docker crée des réseaux par défaut. Vous pouvez les lister en utilisant docker network ls.

docker network ls

Vous verrez probablement des réseaux tels que bridge, host et none. Inspectons le réseau bridge.

docker inspect network bridge

Cette commande affichera des détails sur le réseau bridge, y compris sa configuration, les conteneurs connectés et les informations d'adressage IP.

Enfin, inspectons un volume Docker. Si vous n'avez pas de volumes, vous pouvez en créer un.

docker volume create myvolume

Maintenant, inspectez le volume que vous venez de créer.

docker inspect volume myvolume

Cela affichera des informations sur le volume myvolume, telles que son pilote (driver), son point de montage (mount point) et sa portée (scope).

En spécifiant le type d'objet (container, image, network, volume, etc.), vous pouvez utiliser docker inspect pour obtenir des informations détaillées sur différents composants de votre environnement Docker.

Résumé

Dans ce laboratoire (lab), vous avez appris à utiliser la commande docker inspect pour obtenir des informations détaillées sur les conteneurs Docker. Vous avez commencé par inspecter un conteneur et à comprendre la sortie JSON par défaut complète, qui fournit une grande variété de détails sur la configuration et l'état.

Ensuite, vous avez exploré comment formater la sortie en utilisant le flag --format et la syntaxe de templating Go pour extraire des informations spécifiques, telles que l'adresse IP d'un conteneur. Cela démontre la flexibilité de docker inspect pour adapter la sortie à vos besoins.