Comment utiliser la commande docker stack ls pour lister les piles Docker

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 stack ls pour lister les piles Docker (Docker stacks). Nous commencerons par installer Docker Compose, qui est essentiel pour définir et déployer des applications multi-conteneurs sous forme de piles. Vous déployerez ensuite une simple pile de service web à l'aide d'un fichier docker-compose.yml afin d'avoir une pile à lister.

Après le déploiement, vous explorerez différentes façons de lister les piles à l'aide de docker stack ls. Cela inclut la liste de toutes les piles en cours d'exécution, la liste des piles avec un format de sortie personnalisé pour afficher des informations spécifiques, et la liste des piles au format JSON pour un traitement par programme.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") subgraph Lab Skills docker/ls -.-> lab-555235{{"Comment utiliser la commande docker stack ls pour lister les piles Docker"}} end

Lister toutes les piles (stacks)

Dans cette étape, vous apprendrez à lister toutes les piles Docker (Docker stacks) en cours d'exécution sur votre système. Une pile Docker est une collection de services déployés ensemble. Avant de pouvoir lister les piles, nous devons installer Docker Compose, qui est utilisé pour définir et exécuter des applications Docker multi-conteneurs.

Tout d'abord, installons Docker Compose. Nous allons télécharger le binaire Docker Compose et le rendre exécutable.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

La première commande télécharge le binaire Docker Compose depuis le dépôt GitHub officiel. $(uname -s) et $(uname -m) sont utilisés pour obtenir le système d'exploitation et l'architecture de votre machine, afin de vous assurer de télécharger le bon binaire. La deuxième commande rend le fichier téléchargé exécutable.

Maintenant que Docker Compose est installé, vérifions l'installation en vérifiant la version.

docker-compose --version

Vous devriez voir la version de Docker Compose installée dans la sortie.

Pour démontrer la liste des piles, nous devons déployer une simple pile. Nous allons créer un fichier docker-compose.yml qui définit un simple service web.

nano ~/project/docker-compose.yml

Collez le contenu suivant dans le fichier docker-compose.yml :

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Ce fichier docker-compose.yml définit un seul service nommé web qui utilise l'image nginx:latest et mappe le port 80 de l'hôte sur le port 80 du conteneur.

Maintenant, déployons cette pile à l'aide de la commande docker stack deploy. Nous allons nommer notre pile mywebstack.

docker stack deploy -c ~/project/docker-compose.yml mywebstack

Le flag -c spécifie le fichier Compose à utiliser, et mywebstack est le nom que nous donnons à notre pile. Vous verrez une sortie indiquant que les services sont en cours de création et de déploiement.

Après avoir déployé la pile, vous pouvez lister toutes les piles en cours d'exécution à l'aide de la commande docker stack ls.

docker stack ls

Cette commande affichera une liste de toutes les piles déployées, y compris le nom de la pile, le nombre de services, et le nombre souhaité et actuel de répliques pour chaque service. Vous devriez voir mywebstack dans la liste des résultats.

Lister les piles (stacks) avec un format personnalisé

Dans l'étape précédente, vous avez appris à lister toutes les piles Docker déployées en utilisant le format de sortie par défaut. Dans cette étape, vous apprendrez à personnaliser le format de sortie de la commande docker stack ls pour afficher uniquement les informations dont vous avez besoin.

La commande docker stack ls prend en charge le flag --format, qui vous permet de spécifier un modèle Go pour formater la sortie. Cela est utile lorsque vous souhaitez extraire des informations spécifiques ou intégrer la sortie avec d'autres outils.

Commençons par lister les noms des piles et le nombre de services dans chaque pile. Nous pouvons utiliser les champs de modèle {{.Name}} et {{.Services}} à cet effet.

docker stack ls --format "{{.Name}}: {{.Services}}"

Dans cette commande, --format "{{.Name}}: {{.Services}}" indique à Docker d'afficher le nom de chaque pile suivi d'un deux-points puis du nombre de services. Les {{.Name}} et {{.Services}} sont des espaces réservés qui seront remplacés par les valeurs réelles de chaque pile.

Vous devriez voir une sortie similaire à mywebstack: 1, indiquant le nom de la pile et le nombre de services qu'elle contient.

Vous pouvez également inclure d'autres champs dans la chaîne de format. Par exemple, listons le nom de la pile et le nombre souhaité de répliques.

docker stack ls --format "Stack Name: {{.Name}}, Desired Replicas: {{.Desired}}"

Ici, nous utilisons le champ {{.Desired}} pour afficher le nombre souhaité de répliques pour les services de la pile.

Le flag --format est très flexible et vous permet de combiner différents champs et d'ajouter du texte personnalisé. Vous pouvez trouver une liste des champs disponibles dans la documentation Docker pour la commande docker stack ls.

Essayons un autre exemple en listant le nom de la pile et le nombre actuel de répliques.

docker stack ls --format "Stack: {{.Name}}, Current Replicas: {{.Current}}"

Cette commande utilise le champ {{.Current}} pour afficher le nombre actuel de répliques en cours d'exécution pour les services de la pile.

L'utilisation du flag --format vous permet d'adapter la sortie de docker stack ls à vos besoins spécifiques, facilitant ainsi le traitement et l'analyse des informations sur les piles déployées.

Lister les piles (stacks) au format JSON

Dans les étapes précédentes, vous avez appris à lister les piles Docker en utilisant les formats par défaut et personnalisés. Dans cette étape, vous apprendrez à lister les piles Docker au format JSON. Cela est particulièrement utile lorsque vous devez analyser la sortie de manière programmée ou l'intégrer à d'autres systèmes.

La commande docker stack ls, comme de nombreuses autres commandes Docker, prend en charge l'option --format json pour afficher les résultats sous forme de tableau JSON.

Listons les piles déployées au format JSON.

docker stack ls --format json

Cette commande affichera un tableau JSON, où chaque élément du tableau représente une pile Docker et contient des informations sur la pile, telles que son nom, les services, le nombre de répliques souhaité et le nombre de répliques actuelles.

La sortie ressemblera à ceci (le contenu exact dépendra des piles que vous avez déployées) :

[
  {
    "Name": "mywebstack",
    "Services": "1",
    "Desired": "1",
    "Current": "1"
  }
]

Cette sortie JSON est structurée et facile à analyser à l'aide de langages de script ou d'autres outils. Par exemple, vous pourriez utiliser un outil comme jq pour extraire des champs spécifiques de la sortie JSON.

Installons jq, un processeur JSON en ligne de commande léger et flexible.

sudo apt-get update
sudo apt-get install -y jq

Maintenant que jq est installé, utilisons-le pour extraire uniquement les noms des piles déployées de la sortie JSON.

docker stack ls --format json | jq '.[].Name'

Dans cette commande, nous envoyons la sortie JSON de docker stack ls --format json à jq. Le '.[].Name' est un filtre jq qui sélectionne le champ Name de chaque objet dans le tableau JSON.

Vous devriez voir le nom de votre pile déployée, mywebstack, en sortie.

Lister les piles au format JSON offre un moyen structuré d'accéder aux informations sur les piles, ce qui est essentiel pour les besoins d'automatisation et d'intégration.

Résumé

Dans ce laboratoire (lab), vous avez appris à utiliser la commande docker stack ls pour lister les piles Docker (Docker stacks). Le laboratoire a commencé par vous guider à travers l'installation de Docker Compose, une condition préalable pour travailler avec les piles Docker, et à vérifier son installation. Vous avez ensuite créé un fichier docker-compose.yml simple définissant un service web de base et l'avez déployé sous forme de pile nommée mywebstack en utilisant docker stack deploy.

Les étapes suivantes, bien que non entièrement détaillées dans le contenu fourni, auraient couvert la liste de toutes les piles déployées en utilisant docker stack ls, la personnalisation du format de sortie pour afficher des informations spécifiques et la liste des piles au format JSON pour le traitement programmatiques. Cette expérience pratique a fourni des connaissances pratiques sur la gestion et l'inspection des piles Docker en utilisant la commande docker stack ls et ses diverses options.