Comment utiliser la commande docker node inspect pour afficher les détails des nœuds

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 (lab), vous apprendrez à utiliser la commande docker node inspect pour afficher des informations détaillées sur les nœuds (nodes) Docker Swarm. Nous commencerons par inspecter un seul nœud en utilisant son identifiant (ID), puis nous explorerons comment inspecter le nœud actuel en utilisant le mot-clé 'self'. Enfin, vous apprendrez à formater la sortie pour afficher des informations spécifiques et à afficher les détails du nœud de manière plus lisible. Cette expérience pratique vous dotera des compétences nécessaires pour examiner et comprendre efficacement la configuration et l'état de vos nœuds Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/inspect -.-> lab-555181{{"Comment utiliser la commande docker node inspect pour afficher les détails des nœuds"}} docker/version -.-> lab-555181{{"Comment utiliser la commande docker node inspect pour afficher les détails des nœuds"}} end

Inspecter un seul nœud (node)

Dans cette étape, nous apprendrons à inspecter un seul nœud Docker. La commande docker node inspect fournit des informations détaillées sur un nœud spécifique dans un Docker Swarm.

Tout d'abord, vérifions la version de Docker installée sur la machine virtuelle (VM) LabEx.

docker version

Vous devriez voir une sortie similaire à celle-ci, indiquant que la version de Docker est 20.10.21 :

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baedd2f
 Built:             Tue Oct 25 17:58:10 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:56:04 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b35cd9b83c7c7b1200458f9f9f8d73288d61e58e
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Maintenant, initialisons un Docker Swarm. Cela est nécessaire pour avoir des nœuds à inspecter.

docker swarm init

Vous devriez voir une sortie indiquant que le swarm a été initialisé et fournissant un jeton d'adhésion (join token) :

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

La sortie montre que le nœud actuel est maintenant un gestionnaire (manager). Le xxxxxxxxxxxx est l'identifiant (ID) du nœud actuel. Nous utiliserons cet ID pour inspecter le nœud.

Maintenant, inspectons le nœud actuel en utilisant son ID. Remplacez YOUR_NODE_ID par l'identifiant réel du nœud à partir de la sortie de la commande docker swarm init.

docker node inspect YOUR_NODE_ID

Par exemple, si l'identifiant de votre nœud était abcdef123456, la commande serait :

docker node inspect abcdef123456

Cette commande affichera un grand objet JSON contenant des informations détaillées sur le nœud, y compris son statut, son rôle, son nom d'hôte (hostname), etc.

Inspecter le nœud (node) actuel en utilisant 'self'

Dans l'étape précédente, nous avons inspecté un nœud en utilisant son identifiant (ID) spécifique. Docker Swarm propose un alias pratique, self, pour désigner le nœud actuel. Cela est utile lorsque vous souhaitez inspecter le nœud sur lequel vous opérez actuellement sans avoir besoin de connaître son ID.

Utilisons l'alias self pour inspecter le nœud actuel.

docker node inspect self

Cette commande produira la même sortie JSON détaillée que l'inspection du nœud par son ID. L'utilisation de self rend vos commandes plus portables et plus faciles à utiliser, en particulier dans les scripts ou lorsque vous n'avez pas l'ID du nœud facilement accessible.

La sortie sera un grand objet JSON, similaire à ce que vous avez vu dans l'étape précédente. Ce JSON contient toutes les informations de configuration et d'état du nœud actuel.

Formater la sortie pour afficher des informations spécifiques

Dans les étapes précédentes, nous avons vu que docker node inspect produit une grande sortie sous forme d'objet JSON. Souvent, vous n'avez besoin que de parties spécifiques d'informations de cette sortie. Docker propose le paramètre --format pour extraire et formater des données spécifiques en utilisant le paquet text/template de Go.

Utilisons le paramètre --format pour afficher uniquement le nom d'hôte (hostname) du nœud (node) actuel. Le nom d'hôte se trouve au chemin .Description.Hostname dans la sortie JSON.

docker node inspect --format '{{ .Description.Hostname }}' self

Cette commande affichera uniquement le nom d'hôte du nœud actuel. La partie {{ .Description.Hostname }} est la syntaxe de modèle Go pour accéder au champ Hostname dans l'objet Description de la sortie JSON.

Maintenant, essayons d'afficher l'identifiant (ID) du nœud et sa disponibilité (availability). L'ID du nœud se trouve au chemin .ID, et la disponibilité se trouve au chemin .Spec.Availability. Nous pouvons combiner plusieurs champs dans la chaîne de formatage.

docker node inspect --format 'ID: {{ .ID }}, Availability: {{ .Spec.Availability }}' self

Cette commande affichera l'ID du nœud et sa disponibilité dans un format plus lisible. Vous pouvez utiliser cette technique pour extraire n'importe quel champ de la sortie JSON de docker node inspect.

Afficher les informations du nœud (node) de manière formatée

Dans les étapes précédentes, nous avons vu la sortie JSON brute et comment extraire des champs spécifiques. Parfois, vous souhaitez obtenir une sortie structurée et plus lisible pour les informations du nœud sans avoir à analyser le JSON brut vous-même. La commande docker node inspect propose un paramètre --pretty à cet effet.

Utilisons le paramètre --pretty pour afficher les informations du nœud dans un format plus lisible.

docker node inspect --pretty self

Cette commande affichera un résumé formaté des informations du nœud, y compris son identifiant (ID), son nom d'hôte (hostname), son statut (status), sa disponibilité (availability) et son rôle (role). Cette sortie est beaucoup plus facile à lire et à comprendre d'un coup d'œil par rapport au JSON brut.

La sortie ressemblera à ceci :

ID:             abcdef123456
Hostname:       labex-vm
Status:         Ready
Availability:   Active
Manager Status:
  Address:      172.17.0.2:2377
  Reachability: Reachable
  Leader:       Yes
Platform:
  Architecture: x86_64
  OS:           linux
Resources:
  NanoCPUs:     2000000000
  MemoryBytes:  4177903616
Engine Version: 20.10.21

Cette sortie formatée est très utile pour vérifier rapidement le statut et les détails clés d'un nœud dans votre Docker Swarm.

Résumé

Dans ce laboratoire (lab), nous avons appris à utiliser la commande docker node inspect pour afficher des informations détaillées sur les nœuds (nodes) d'un Docker Swarm. Nous avons commencé par inspecter un seul nœud en utilisant son identifiant (ID) après avoir initialisé un Docker Swarm.

Ensuite, nous avons exploré comment inspecter le nœud actuel en utilisant l'alias 'self'. Enfin, nous avons appris à formater la sortie pour afficher des informations spécifiques et à afficher les détails du nœud de manière formatée pour une meilleure lisibilité.