Comment utiliser la commande docker node ps pour lister les tâches

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 la commande docker node ps pour lister et filtrer les tâches en cours d'exécution sur un nœud Docker Swarm. Vous commencerez par initialiser un Docker Swarm et créer un service simple pour générer des tâches.

Vous explorerez ensuite comment lister toutes les tâches sur un nœud spécifique, filtrer les tâches en fonction de leur nom et de leur état souhaité, et enfin, formater la sortie de la liste des tâches pour une meilleure lisibilité et une extraction d'informations plus efficace. Cette expérience pratique vous offrira des compétences pratiques pour surveiller et gérer les tâches au sein de votre cluster Docker Swarm.


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/rm("Remove Container") subgraph Lab Skills docker/ls -.-> lab-555184{{"Comment utiliser la commande docker node ps pour lister les tâches"}} docker/ps -.-> lab-555184{{"Comment utiliser la commande docker node ps pour lister les tâches"}} docker/rm -.-> lab-555184{{"Comment utiliser la commande docker node ps pour lister les tâches"}} end

Lister toutes les tâches sur un nœud

Dans cette étape, vous apprendrez à lister toutes les tâches en cours d'exécution sur un nœud Docker Swarm. Docker Swarm est un outil d'orchestration de conteneurs qui vous permet de gérer un cluster de nœuds Docker. Une tâche est une instance en cours d'exécution d'un service.

Avant de lister les tâches, nous devons avoir un service Docker Swarm en cours d'exécution. Pour ce laboratoire, nous utiliserons un service nginx simple.

Tout d'abord, initialisons un Docker Swarm sur ce nœud.

docker swarm init

Vous devriez voir une sortie indiquant que le swarm a été initialisé et fournissant un jeton d'adhésion.

Maintenant, créons un service simple nommé my-nginx-service en utilisant l'image nginx. Nous allons d'abord télécharger l'image nginx pour nous assurer qu'elle est disponible.

docker pull nginx:latest
docker service create --name my-nginx-service --replicas 1 nginx

La commande docker service create crée un nouveau service avec une réplique (une tâche). Docker téléchargera automatiquement l'image nginx si elle n'est pas déjà présente, mais nous l'avons explicitement téléchargée au préalable.

Après la création du service, Docker démarrera une tâche pour ce service sur l'un des nœuds du swarm (dans ce cas, le nœud actuel).

Pour lister toutes les tâches en cours d'exécution sur le nœud, vous pouvez utiliser la commande docker node ps suivie de l'ID du nœud ou du nom d'hôte. Étant donné que nous sommes sur le nœud manager où le service a été créé, nous pouvons utiliser l'ID du nœud actuel.

Pour trouver l'ID du nœud, vous pouvez utiliser la commande docker node ls.

docker node ls

Cette commande listera tous les nœuds du swarm. La sortie affichera l'ID du nœud, le nom d'hôte, l'état, la disponibilité et le statut du manager. Copiez l'ID du nœud actuel (celui avec Leader sous MANAGER STATUS).

Maintenant, utilisez la commande docker node ps avec l'ID du nœud que vous avez copié pour lister les tâches sur ce nœud. Remplacez <node_id> par l'ID réel du nœud.

docker node ps <node_id>

Cette commande affichera une liste des tâches en cours d'exécution sur le nœud spécifié, y compris l'ID de la tâche, le nom du service, l'image, le nœud, l'état souhaité, l'état actuel et l'erreur. Vous devriez voir la tâche my-nginx-service.1 répertoriée avec un état de Running.

Alternativement, vous pouvez lister toutes les tâches du swarm en utilisant la commande docker task ls. Cette commande est utile pour voir les tâches sur tous les nœuds du swarm.

docker task ls

Cette commande affichera des informations similaires à docker node ps, mais elle liste les tâches de tous les nœuds du swarm. Étant donné que nous n'avons qu'un seul nœud et une seule tâche, la sortie sera similaire à docker node ps.

Dans cette étape, vous avez appris à lister les tâches sur un nœud spécifique en utilisant docker node ps et à lister toutes les tâches du swarm en utilisant docker task ls.

Filtrer les tâches par nom

Dans cette étape, vous apprendrez à filtrer la liste des tâches par leur nom. Cela est utile lorsque vous avez de nombreux services et tâches en cours d'exécution et que vous ne voulez voir que les tâches liées à un service spécifique.

Nous continuerons à utiliser le my-nginx-service créé à l'étape précédente.

Pour filtrer les tâches par nom, vous pouvez utiliser le drapeau --filter avec la clé name dans la commande docker task ls. La syntaxe est --filter name=<service_name>.

Filtrons les tâches pour n'afficher que celles appartenant au my-nginx-service.

docker task ls --filter name=my-nginx-service

Cette commande ne listera que les tâches dont le nom du service est my-nginx-service. Vous devriez voir la tâche my-nginx-service.1 répertoriée.

Vous pouvez également filtrer par le nom complet de la tâche, qui inclut le nom du service et le numéro de la tâche (par exemple, my-nginx-service.1).

docker task ls --filter name=my-nginx-service.1

Cette commande listera spécifiquement la tâche avec le nom exact my-nginx-service.1.

Si vous aviez plusieurs services en cours d'exécution, filtrer par nom de service montrerait toutes les tâches pour ce service. Par exemple, si vous aviez un autre service nommé my-app-service, l'exécution de docker task ls --filter name=my-app-service montrerait toutes les tâches pour my-app-service.

Filtrer par nom est un moyen puissant de réduire la sortie de la commande docker task ls et de vous concentrer sur les tâches qui vous intéressent.

Filtrer les tâches par état souhaité

Dans cette étape, vous apprendrez à filtrer la liste des tâches en fonction de leur état souhaité. L'état souhaité d'une tâche est l'état dans lequel le gestionnaire Docker Swarm veut que la tâche se trouve (par exemple, Running (en cours d'exécution), Shutdown (arrêté), Accepted (accepté)).

Nous continuerons à utiliser le my-nginx-service créé dans les étapes précédentes. Actuellement, l'état souhaité de la tâche pour ce service est Running.

Pour filtrer les tâches par état souhaité, vous pouvez utiliser le drapeau --filter avec la clé desired-state dans la commande docker task ls. La syntaxe est --filter desired-state=<state>.

Filtrons les tâches pour n'afficher que celles dont l'état souhaité est Running.

docker task ls --filter desired-state=Running

Cette commande ne listera que les tâches dont l'état souhaité est Running. Vous devriez voir la tâche my-nginx-service.1 répertoriée.

Maintenant, réduisons l'échelle du service à 0 répliques. Cela changera l'état souhaité de la tâche existante à Shutdown.

docker service scale my-nginx-service=0

Après avoir réduit l'échelle, la tâche passera finalement à l'état Shutdown. Il peut prendre quelques instants pour que l'état soit mis à jour.

Maintenant, filtrons les tâches pour afficher celles dont l'état souhaité est Shutdown.

docker task ls --filter desired-state=Shutdown

Vous devriez maintenant voir la tâche my-nginx-service.1 répertoriée avec un état souhaité de Shutdown.

D'autres états souhaités possibles incluent Accepted (lorsqu'une tâche est acceptée par un nœud worker mais n'est pas encore en cours d'exécution) et Failed (si une tâche a échoué à démarrer).

Filtrer par état souhaité est utile pour surveiller l'état de vos services et identifier les tâches qui ne sont pas dans l'état attendu.

Formater la sortie des tâches

Dans cette étape, vous apprendrez à formater la sortie de la commande docker task ls pour afficher des informations spécifiques dans un format personnalisé. Cela est utile pour la création de scripts ou la génération de rapports.

Nous continuerons à utiliser le my-nginx-service et sa tâche.

Pour formater la sortie, vous pouvez utiliser le drapeau --format avec une chaîne de modèle Go. La chaîne de modèle vous permet de spécifier quels champs afficher et comment les formater.

Affichons uniquement l'ID de la tâche, le nom du service et l'état actuel des tâches.

docker task ls --format "{{.ID}}\t{{.Service}}\t{{.CurrentState}}"

Dans cette commande :

  • {{.ID}} fait référence à l'ID de la tâche.
  • {{.Service}} fait référence au nom du service.
  • {{.CurrentState}} fait référence à l'état actuel de la tâche.
  • \t est utilisé pour insérer un caractère de tabulation entre les champs pour une meilleure lisibilité.

La sortie affichera l'ID de la tâche, le nom du service et l'état actuel de chaque tâche.

Vous pouvez également utiliser le format table pour afficher la sortie dans un tableau avec des colonnes spécifiques.

docker task ls --format "table {{.ID}}\t{{.Service}}\t{{.CurrentState}}\t{{.Node}}"

Cette commande affichera un tableau avec des colonnes pour l'ID de la tâche, le service, l'état actuel et le nœud.

Pour voir tous les champs disponibles que vous pouvez utiliser dans la chaîne de format, vous pouvez inspecter une tâche à l'aide de la commande docker task inspect et examiner la sortie JSON. Cependant, certains champs courants incluent :

  • .ID : ID de la tâche
  • .Service : Nom du service
  • .Image : Nom de l'image
  • .Node : Nom d'hôte du nœud
  • .DesiredState : État souhaité de la tâche
  • .CurrentState : État actuel de la tâche
  • .Error : Message d'erreur si la tâche a échoué
  • .CreatedAt : Horodatage de la création de la tâche
  • .UpdatedAt : Horodatage de la dernière mise à jour de la tâche

Affichons l'ID de la tâche, l'image et le nœud sur lequel elle s'exécute.

docker task ls --format "{{.ID}}\t{{.Image}}\t{{.Node}}"

Cette commande affichera l'ID de la tâche, l'image utilisée par la tâche et le nœud sur lequel la tâche s'exécute.

Le formatage de la sortie vous permet de personnaliser les informations affichées par docker task ls selon vos besoins, que ce soit pour une inspection rapide ou pour une utilisation dans des scripts.

Enfin, nettoyons le service que nous avons créé.

docker service rm my-nginx-service

Cette commande supprimera le service et les tâches associées.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande docker node ps pour lister les tâches en cours d'exécution sur un nœud Docker Swarm spécifique. Vous avez commencé par initialiser un Docker Swarm et créer un simple service nginx avec une seule réplique. Vous avez ensuite utilisé docker node ls pour identifier l'ID du nœud du gestionnaire actuel, puis docker node ps <node_id> pour afficher toutes les tâches en cours d'exécution sur ce nœud.

Le laboratoire a également abordé la manière d'affiner la sortie de docker node ps en filtrant les tâches en fonction de leur nom et de leur état souhaité, ainsi que la manière de formater la sortie pour une meilleure lisibilité. Ces étapes démontrent la flexibilité de la commande docker node ps pour surveiller et gérer les tâches au sein d'un cluster Docker Swarm.