Comment utiliser la commande docker service ls pour lister les services

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 service ls pour gérer et inspecter les services en cours d'exécution dans un Docker Swarm. Vous commencerez par lister tous les services de votre swarm, afin d'avoir une compréhension de base de la sortie de la commande et des informations qu'elle fournit.

En vous appuyant sur la liste de base, vous explorerez ensuite des options de filtrage puissantes. Cela inclut le filtrage des services par leur nom, ce qui vous permet de localiser rapidement des services spécifiques. Vous apprendrez également à filtrer par mode de service (par exemple, répliqué ou global) et par étiquettes (labels), qui sont des paires clé-valeur utilisées pour organiser et identifier les services. Enfin, vous découvrirez comment formater la sortie de la commande docker service ls pour afficher les informations de la manière qui vous convient le mieux, facilitant ainsi l'analyse des détails des services.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/ls -.-> lab-555227{{"Comment utiliser la commande docker service ls pour lister les services"}} docker/pull -.-> lab-555227{{"Comment utiliser la commande docker service ls pour lister les services"}} docker/info -.-> lab-555227{{"Comment utiliser la commande docker service ls pour lister les services"}} end

Lister tous les services dans le swarm

Dans cette étape, vous apprendrez à lister tous les services en cours d'exécution dans un Docker Swarm. Avant de lister les services, vous devez avoir initialisé un Docker Swarm et avoir au moins un service en cours d'exécution.

Tout d'abord, initialisons un Docker Swarm s'il n'est pas déjà initialisé. Vous pouvez vérifier l'état du swarm en utilisant la commande docker info. Si la sortie inclut "Swarm: active", le swarm est déjà initialisé. Sinon, vous devez l'initialiser.

docker info

Si le swarm n'est pas actif, initialisez-le :

docker swarm init

Maintenant, créons un simple service à lister. Nous allons créer un service nommé my-web-service en utilisant l'image nginx. Comme nous utilisons un environnement neuf, nous devons d'abord télécharger l'image nginx.

docker pull nginx

Maintenant, créons le service :

docker service create --name my-web-service -p 80:80 nginx

Cette commande crée un service nommé my-web-service à partir de l'image nginx et publie le port 80 du conteneur sur le port 80 de l'hôte.

Pour lister tous les services dans le swarm, vous utilisez la commande docker service ls. Cette commande affiche des informations sur les services, y compris leur ID, leur nom, leur mode, le nombre de réplicas et l'image qu'ils utilisent.

docker service ls

La sortie affichera le my-web-service que vous venez de créer. Vous devriez voir son ID, son nom, son mode (répliqué), le nombre de réplicas (généralement 1 par défaut) et l'image (nginx).

Filtrer les services par nom

Dans cette étape, vous apprendrez à filtrer la liste des services par leur nom en utilisant la commande docker service ls avec l'option --filter. Cela est utile lorsque vous avez de nombreux services en cours d'exécution et que vous ne voulez voir que les informations sur un service spécifique ou un groupe de services ayant des noms similaires.

La syntaxe de base pour filtrer par nom est docker service ls --filter name=<service_name>. Vous pouvez fournir le nom complet du service ou une partie du nom.

Dans l'étape précédente, nous avons créé un service nommé my-web-service. Utilisons le filtre pour afficher uniquement ce service.

docker service ls --filter name=my-web-service

La sortie devrait uniquement afficher la ligne correspondant au my-web-service.

Vous pouvez également utiliser des noms partiels pour filtrer. Par exemple, si vous aviez des services nommés my-web-service-1 et my-web-service-2, filtrer par name=my-web afficherait les deux. Dans notre configuration actuelle, filtrer par name=my-web affichera toujours my-web-service.

docker service ls --filter name=my-web

Cette commande montre comment utiliser un nom partiel pour filtrer. La sortie devrait toujours lister my-web-service.

Filtrer par nom est un moyen rapide de réduire la liste des services et de trouver les informations dont vous avez besoin sur un service spécifique sans avoir à parcourir toute la liste.

Filtrer les services par mode

Dans cette étape, vous apprendrez à filtrer la liste des services en fonction de leur mode en utilisant la commande docker service ls avec l'option --filter. Les services Docker Swarm peuvent fonctionner en deux modes : replicated (répliqué) et global (global).

  • Répliqué (Replicated) : C'est le mode par défaut. Le gestionnaire de swarm planifie un nombre spécifié de réplicas de la tâche de service sur les nœuds disponibles.
  • Global : Le swarm exécute une tâche pour le service sur chaque nœud disponible.

La syntaxe de base pour filtrer par mode est docker service ls --filter mode=<mode>. Vous pouvez utiliser soit replicated soit global comme mode.

Dans les étapes précédentes, nous avons créé un service nommé my-web-service qui fonctionne en mode replicated par défaut. Filtrons les services pour n'afficher que ceux qui fonctionnent en mode replicated.

docker service ls --filter mode=replicated

La sortie devrait afficher my-web-service car c'est un service répliqué.

Maintenant, essayons de filtrer les services en mode global. Comme nous n'avons créé aucun service global, cette commande ne devrait afficher aucun service.

docker service ls --filter mode=global

La sortie de cette commande devrait seulement afficher la ligne d'en-tête et aucune entrée de service, car aucun service global n'est en cours d'exécution.

Filtrer par mode est utile lorsque vous souhaitez voir seulement les services d'un type spécifique, par exemple, pour vérifier l'état de tous vos services globaux destinés à fonctionner sur chaque nœud.

Filtrer les services par étiquette (label)

Dans cette étape, vous apprendrez à filtrer la liste des services en fonction des étiquettes (labels) en utilisant la commande docker service ls avec l'option --filter. Les étiquettes sont des paires clé-valeur que vous pouvez attacher aux objets Docker, y compris les services, pour faciliter leur organisation et leur identification.

La syntaxe de base pour filtrer par étiquette est docker service ls --filter label=<key>=<value>. Vous pouvez filtrer par une clé et une valeur d'étiquette spécifiques, ou simplement par la présence d'une clé d'étiquette.

Tout d'abord, mettons à jour notre service existant my-web-service pour ajouter une étiquette. Nous allons ajouter l'étiquette environment=development au service.

docker service update --label-add environment=development my-web-service

Cette commande met à jour le my-web-service et ajoute l'étiquette spécifiée.

Maintenant, filtrons les services pour n'afficher que ceux ayant l'étiquette environment=development.

docker service ls --filter label=environment=development

La sortie devrait afficher my-web-service car nous venons d'ajouter cette étiquette à ce service.

Vous pouvez également filtrer simplement par la présence d'une clé d'étiquette, quelle que soit sa valeur. Par exemple, pour lister tous les services qui ont l'étiquette environment :

docker service ls --filter label=environment

Cette commande listera tous les services qui ont l'étiquette environment, quelle que soit sa valeur. Dans notre cas, elle affichera toujours my-web-service.

Filtrer par étiquettes est un moyen puissant de gérer et d'interroger les services, en particulier dans les grands swarms où vous pourriez utiliser des étiquettes pour catégoriser les services par environnement, équipe ou application.

Formater la sortie de la liste des services

Dans cette étape, vous apprendrez à formater la sortie de la commande docker service ls en utilisant l'option --format. Cela vous permet de personnaliser les informations affichées et le format dans lequel elles sont présentées, ce qui est particulièrement utile pour les scripts ou la génération de rapports.

L'option --format utilise le paquet text/template de Go. Vous pouvez spécifier les champs que vous souhaitez afficher et la manière dont ils doivent être formatés. Les champs courants pour les services incluent .ID, .Name, .Mode, .Replicas et .Image.

Commençons par afficher uniquement l'ID et le nom du service, séparés par une tabulation.

docker service ls --format "{{.ID}}\t{{.Name}}"

La sortie affichera l'ID et le nom de my-web-service, séparés par un caractère de tabulation.

Maintenant, affichons le nom du service, l'image et le mode dans un format plus lisible, peut - être sous forme de tableau sans l'en - tête par défaut.

docker service ls --format "table {{.Name}}\t{{.Image}}\t{{.Mode}}"

L'utilisation de table au début de la chaîne de format indique à Docker de formater la sortie sous forme de tableau. Les champs sont séparés par des tabulations (\t).

Vous pouvez également utiliser le format JSON, qui est très utile pour le traitement par programme.

docker service ls --format json

Cette commande affichera les informations sur le service au format JSON.

Le formatage de la sortie vous offre une grande flexibilité dans la manière dont vous visualisez et utilisez les informations sur les services. Vous pouvez sélectionner des champs spécifiques, changer les séparateurs et afficher les données dans différents formats tels que le tableau ou le JSON.

Résumé

Dans ce laboratoire (lab), vous avez appris à utiliser la commande docker service ls pour lister les services en cours d'exécution dans un Docker Swarm. Vous avez commencé par vous assurer qu'un Docker Swarm était initialisé et en créant un service d'exemple. Vous avez ensuite utilisé docker service ls pour afficher tous les services en cours d'exécution, en comprenant la sortie de base, y compris l'ID du service, le nom, le mode, le nombre de réplicas (replicas) et l'image.

En outre, vous avez exploré comment filtrer la liste des services en utilisant l'option --filter. Vous avez appris à filtrer les services spécifiquement par leur nom, ce qui est essentiel pour gérer un grand nombre de services et vous concentrer sur les informations pertinentes.