Comment utiliser la commande docker node ls pour lister les nœuds d'un swarm

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 efficacement la commande docker node ls pour gérer et inspecter les nœuds (nodes) au sein d'un Docker Swarm. Nous commencerons par initialiser un Docker Swarm et lister tous les nœuds.

Ensuite, vous explorerez diverses options de filtrage pour réduire la liste des nœuds en fonction de critères tels que l'ID du nœud, le rôle (manager ou worker) et les étiquettes personnalisées des nœuds. Enfin, vous apprendrez à formater la sortie pour afficher uniquement les informations spécifiques dont vous avez besoin, améliorant ainsi votre capacité à récupérer rapidement les détails pertinents des nœuds.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555182{{"Comment utiliser la commande docker node ls pour lister les nœuds d'un swarm"}} docker/ps -.-> lab-555182{{"Comment utiliser la commande docker node ls pour lister les nœuds d'un swarm"}} docker/inspect -.-> lab-555182{{"Comment utiliser la commande docker node ls pour lister les nœuds d'un swarm"}} end

Lister tous les nœuds (nodes) du swarm

Dans cette étape, nous apprendrons à lister tous les nœuds d'un Docker Swarm. Avant de pouvoir lister les nœuds, nous devons initialiser un Docker Swarm.

Tout d'abord, initialisons le swarm sur la machine actuelle. Cette machine deviendra le nœud manager.

docker swarm init

Vous devriez voir un affichage indiquant que le swarm a été initialisé et fournissant une commande pour joindre d'autres nœuds au swarm.

Maintenant que le swarm est initialisé, nous pouvons lister les nœuds du swarm en utilisant la commande docker node ls.

docker node ls

Cette commande affichera un tableau avec des informations sur les nœuds du swarm, y compris leur ID, leur nom d'hôte (hostname), leur statut, leur disponibilité, leur statut de manager et la version du moteur (engine version). Étant donné que nous n'avons qu'un seul nœud (le nœud manager que nous venons d'initialiser), vous verrez une seule entrée dans la liste.

Le résultat ressemblera à ceci :

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
<node_id> *                   <hostname>          Ready     Active         Leader           20.10.21

Le * à côté de l'ID indique que c'est le nœud actuel sur lequel vous exécutez la commande. La colonne MANAGER STATUS montre que ce nœud est le Leader du swarm.

Filtrer les nœuds (nodes) par ID

Dans cette étape, nous apprendrons à filtrer la liste des nœuds d'un Docker Swarm en fonction de leur ID. Cela est utile lorsque vous avez de nombreux nœuds et que vous souhaitez afficher les informations sur un nœud spécifique.

Tout d'abord, listons à nouveau tous les nœuds pour obtenir l'ID du nœud manager.

docker node ls

Identifiez l'ID du nœud dans le résultat. Il s'agira d'une longue chaîne de caractères.

Maintenant, nous pouvons utiliser le drapeau --filter avec la clé id pour filtrer le résultat et afficher uniquement le nœud avec l'ID spécifié. Remplacez <node_id> par l'ID réel que vous avez obtenu à partir de la commande précédente.

docker node ls --filter id=<node_id>

Cette commande affichera uniquement la ligne correspondant au nœud avec l'ID donné. C'est un moyen simple de trouver rapidement les informations sur un nœud spécifique lorsque vous connaissez son ID.

Par exemple, si l'ID de votre nœud est 24ifihg345h345h345h345h34, la commande serait :

docker node ls --filter id=24ifihg345h345h345h345h34

Le résultat sera le même que la ligne unique pour votre nœud manager de la commande docker node ls de l'étape précédente.

Filtrer les nœuds (nodes) par rôle

Dans cette étape, nous apprendrons à filtrer la liste des nœuds d'un Docker Swarm en fonction de leur rôle. Dans un Docker Swarm, les nœuds peuvent avoir l'un des deux rôles suivants : manager ou worker. Les nœuds manager gèrent le swarm, tandis que les nœuds worker exécutent les services.

Étant donné que nous n'avons actuellement qu'un seul nœud dans notre swarm, et que c'est le nœud manager, filtrons pour afficher uniquement les nœuds manager. Nous utilisons le drapeau --filter avec la clé role et la valeur manager.

docker node ls --filter role=manager

Cette commande affichera uniquement les nœuds qui ont le rôle de manager. Dans notre configuration actuelle, cela affichera le même nœud unique que précédemment.

Si vous aviez des nœuds worker dans votre swarm, vous pourriez filtrer pour afficher uniquement les nœuds worker en utilisant :

docker node ls --filter role=worker

Actuellement, cette commande n'affichera aucun résultat car il n'y a pas de nœuds worker dans le swarm.

Comprendre comment filtrer par rôle est important pour gérer des swarms plus importants avec plusieurs nœuds manager et worker.

Filtrer les nœuds (nodes) par étiquette (label) de nœud

Dans cette étape, nous apprendrons à filtrer les nœuds en fonction des étiquettes leur étant attribuées. Les étiquettes de nœud sont des paires clé-valeur que vous pouvez attacher aux nœuds à des fins d'organisation ou pour contrôler le placement des services.

Tout d'abord, ajoutons une étiquette à notre nœud manager. Nous allons ajouter l'étiquette location=datacenter1. Pour ce faire, nous utilisons la commande docker node update suivie de l'ID du nœud et du drapeau --label-add.

Récupérez à nouveau l'ID du nœud en utilisant docker node ls -q :

NODE_ID=$(docker node ls -q)
echo $NODE_ID

Maintenant, mettez à jour le nœud avec l'étiquette :

docker node update --label-add location=datacenter1 $NODE_ID

Vous devriez voir un résultat confirmant la mise à jour du nœud.

Pour vérifier que l'étiquette a été ajoutée, vous pouvez inspecter le nœud :

docker node inspect $NODE_ID

Recherchez la section Labels dans le résultat. Vous devriez voir "location": "datacenter1".

Maintenant, filtrons les nœuds en fonction de cette étiquette. Nous utilisons le drapeau --filter avec la clé label et l'étiquette au format clé=valeur.

docker node ls --filter label=location=datacenter1

Cette commande affichera uniquement les nœuds qui ont l'étiquette location avec la valeur datacenter1. Dans notre cas, cela affichera notre nœud manager.

Vous pouvez également filtrer les nœuds qui ont une clé d'étiquette spécifique, quelle que soit sa valeur, en fournissant simplement la clé :

docker node ls --filter label=location

Cela affichera tous les nœuds pour lesquels l'étiquette location est définie.

Formater la sortie pour afficher des informations spécifiques

Dans cette étape, nous apprendrons à formater la sortie de la commande docker node ls pour afficher uniquement les informations qui nous intéressent. Cela est utile pour les scripts ou lorsque vous avez seulement besoin d'un aperçu rapide de détails spécifiques.

Nous utilisons le drapeau --format pour spécifier le format de sortie. Vous pouvez utiliser la syntaxe des templates Go pour définir la sortie souhaitée. Les champs communs auxquels vous pouvez accéder incluent .ID, .Hostname, .Status, .Availability, .ManagerStatus et .EngineVersion.

Affichons uniquement l'ID du nœud et le nom d'hôte (hostname).

docker node ls --format "{{.ID}}\t{{.Hostname}}"

{{.ID}} et {{.Hostname}} sont des espaces réservés respectivement pour l'ID du nœud et le nom d'hôte. \t insère un caractère de tabulation pour la séparation.

La sortie ressemblera à ceci :

<node_id>	<hostname>

Maintenant, affichons le nom d'hôte et le statut du manager.

docker node ls --format "Hostname: {{.Hostname}}, Manager Status: {{.ManagerStatus}}"

Cela produira la sortie suivante :

Hostname: <hostname>, Manager Status: Leader

Vous pouvez combiner le filtrage et le formatage. Par exemple, filtrons les nœuds manager et affichons leur ID et leur nom d'hôte.

docker node ls --filter role=manager --format "{{.ID}}\t{{.Hostname}}"

Cette commande filtre d'abord les nœuds pour n'inclure que les managers, puis formate la sortie pour afficher leur ID et leur nom d'hôte.

L'utilisation du drapeau --format offre une grande flexibilité dans la façon dont vous visualisez et traitez les informations sur les nœuds de votre Docker Swarm.

Résumé

Dans ce laboratoire (lab), nous avons appris à utiliser la commande docker node ls pour gérer et visualiser les informations sur les nœuds (nodes) dans un Docker Swarm. Nous avons commencé par initialiser un Docker Swarm sur la machine actuelle, en la faisant devenir le nœud manager. Ensuite, nous avons utilisé docker node ls pour lister tous les nœuds du swarm, en observant la sortie par défaut qui inclut l'ID, le nom d'hôte (hostname), le statut, la disponibilité, le statut du manager et la version du moteur (engine version).

Nous avons ensuite exploré comment filtrer la liste des nœuds en utilisant le drapeau --filter. Plus précisément, nous avons appris à filtrer les nœuds en fonction de leur ID unique, ce qui nous permet de localiser rapidement et de visualiser les informations sur un nœud spécifique au sein d'un swarm plus important. Le laboratoire couvre également le filtrage par rôle et par étiquette (label) de nœud, ainsi que le formatage de la sortie pour afficher uniquement des informations spécifiques, bien que le contenu fourni ne détaille que le filtrage par ID.