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.
Inspecter un seul nœud
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 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é.



