Comment utiliser la commande docker stack rm pour supprimer des piles

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 stack rm pour supprimer les piles Docker (Docker stacks) déployées dans un environnement Docker Swarm. Vous commencerez par préparer un Docker Swarm à un seul nœud, en l'initialisant et en vérifiant son statut.

Après la configuration de l'environnement, vous déployerez une pile d'exemple à l'aide d'un fichier Docker Compose pour comprendre le processus de déploiement. Le cœur du laboratoire porte sur la suppression des piles : vous commencerez par pratiquer la suppression d'une seule pile déployée, puis vous déploierez plusieurs piles pour apprendre à supprimer plusieurs piles simultanément à l'aide de la commande docker stack rm. Cette expérience pratique vous dotera des compétences nécessaires pour gérer et nettoyer vos déploiements Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/ls -.-> lab-555237{{"Comment utiliser la commande docker stack rm pour supprimer des piles"}} docker/ps -.-> lab-555237{{"Comment utiliser la commande docker stack rm pour supprimer des piles"}} docker/rm -.-> lab-555237{{"Comment utiliser la commande docker stack rm pour supprimer des piles"}} docker/pull -.-> lab-555237{{"Comment utiliser la commande docker stack rm pour supprimer des piles"}} docker/info -.-> lab-555237{{"Comment utiliser la commande docker stack rm pour supprimer des piles"}} docker/version -.-> lab-555237{{"Comment utiliser la commande docker stack rm pour supprimer des piles"}} end

Préparer un environnement Docker Swarm

Dans cette étape, vous préparerez votre environnement pour le déploiement de piles Docker (Docker stacks) en initialisant un Docker Swarm. Docker Swarm est une solution native de clustering et d'orchestration pour Docker. Il vous permet de créer et de gérer un groupe de nœuds Docker.

Tout d'abord, vérifions si Docker est en cours d'exécution et accessible. Vous pouvez le faire en exécutant une simple commande Docker.

docker version

Vous devriez voir une sortie affichant les versions du client et du serveur Docker. Cela confirme que Docker est installé et en cours d'exécution.

Ensuite, nous devons initialiser le Docker Swarm. Étant donné qu'il s'agit d'un environnement à un seul nœud, nous allons initialiser le groupe sur la machine actuelle.

docker swarm init

Cette commande initialise le groupe et transforme le nœud actuel en nœud gestionnaire. La sortie fournira des informations sur l'ajout d'autres nœuds au groupe, mais pour ce laboratoire, nous n'utiliserons qu'un seul nœud.

Pour confirmer que le groupe a été initialisé avec succès, vous pouvez vérifier le statut du groupe.

docker info | grep Swarm

La sortie devrait afficher Swarm: active, indiquant que le groupe est actif sur ce nœud.

Enfin, vérifions que le nœud actuel fait partie du groupe et est un gestionnaire.

docker node ls

Vous devriez voir une liste des nœuds du groupe, avec le nœud actuel répertorié et son statut comme Ready et Leader.

Déployer une pile d'exemple

Dans cette étape, vous apprendrez à déployer une application d'exemple sous forme de pile sur votre Docker Swarm. Une pile (stack) est un groupe de services liés qui partagent des dépendances et peuvent être gérés ensemble. Nous utiliserons un exemple simple impliquant un serveur web Nginx.

Avant de déployer la pile, nous devons créer un fichier Docker Compose qui définit les services de notre pile. Docker Compose est un outil pour définir et exécuter des applications Docker multi-conteneurs. Bien que Docker Compose ne soit pas préinstallé, la commande docker stack deploy peut lire les fichiers Compose.

Tout d'abord, créons un répertoire pour la définition de notre pile. Accédez à votre répertoire personnel et créez un nouveau répertoire nommé my-nginx-stack.

cd ~/project
mkdir my-nginx-stack
cd my-nginx-stack

Maintenant, créez un fichier nommé docker-compose.yml à l'intérieur du répertoire my-nginx-stack en utilisant l'éditeur nano.

nano docker-compose.yml

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

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

Ce fichier docker-compose.yml définit un seul service nommé web qui utilise l'image nginx:latest. Il mappe le port 80 de l'hôte sur le port 80 du conteneur et spécifie qu'il devrait y avoir une seule réplique de ce service. La restart_policy garantit que le service sera redémarré s'il échoue.

Enregistrez le fichier en appuyant sur Ctrl + X, puis Y, et Enter.

Avant de déployer, téléchargeons l'image nginx:latest pour nous assurer qu'elle est disponible localement.

docker pull nginx:latest

Maintenant, déployons la pile en utilisant la commande docker stack deploy. Nous nommerons notre pile nginx_stack.

docker stack deploy -c docker-compose.yml nginx_stack

Cette commande lit le fichier docker-compose.yml et crée les services définis à l'intérieur comme partie de la pile nginx_stack.

Pour vérifier que la pile a été déployée et que le service est en cours d'exécution, vous pouvez lister les services de la pile.

docker stack services nginx_stack

Vous devriez voir une sortie affichant le service nginx_stack_web avec 1/1 répliques en cours d'exécution.

Vous pouvez également vérifier les conteneurs en cours d'exécution pour voir le conteneur Nginx.

docker ps

Vous devriez voir un conteneur exécutant l'image nginx:latest, associé au service nginx_stack_web.

Enfin, vous pouvez accéder au serveur web Nginx en ouvrant un navigateur web et en vous rendant à l'adresse IP de votre machine virtuelle LabEx. Vous devriez voir la page d'accueil par défaut de Nginx.

Supprimer une pile unique

Dans cette étape, vous apprendrez à supprimer une pile déployée de votre Docker Swarm. La suppression d'une pile arrêtera et supprimera tous les services et conteneurs associés à cette pile.

Dans l'étape précédente, nous avons déployé une pile nommée nginx_stack. Pour supprimer cette pile, nous utilisons la commande docker stack rm suivie du nom de la pile.

docker stack rm nginx_stack

Cette commande lancera le processus de suppression. Docker Swarm arrêtera et supprimera le service et son conteneur associé.

Vous devriez voir une sortie indiquant que la pile et ses services sont en cours de suppression.

Pour vérifier que la pile a été supprimée, vous pouvez répertorier les piles déployées à nouveau.

docker stack ls

La pile nginx_stack ne devrait plus apparaître dans la liste des piles déployées.

Vous pouvez également vérifier les services en cours d'exécution pour confirmer que le service nginx_stack_web n'est plus en cours d'exécution.

docker stack services nginx_stack

Cette commande devrait retourner une erreur ou aucune sortie, indiquant que la pile et ses services ont été supprimés.

Enfin, vous pouvez vérifier les conteneurs en cours d'exécution pour vous assurer que le conteneur Nginx associé à la pile a été supprimé.

docker ps

Le conteneur exécutant l'image nginx:latest pour le service nginx_stack_web ne devrait plus être répertorié.

Déployer plusieurs piles d'exemple

Dans cette étape, vous apprendrez à déployer plusieurs piles sur votre Docker Swarm. Cela montre comment vous pouvez gérer différentes applications ou services de manière indépendante au sein du même swarm.

Nous allons déployer deux piles simples : l'une utilisant Nginx et l'autre utilisant le serveur HTTP Apache.

Tout d'abord, créons un répertoire pour la définition de la pile Apache. Revenons au répertoire ~/project et créons un nouveau répertoire nommé my-apache-stack.

cd ~/project
mkdir my-apache-stack
cd my-apache-stack

Maintenant, créons un fichier nommé docker-compose.yml à l'intérieur du répertoire my-apache-stack en utilisant l'éditeur nano.

nano docker-compose.yml

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

version: "3.8"
services:
  web:
    image: httpd:latest
    ports:
      - "81:80"
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

Ce fichier docker-compose.yml définit un service nommé web qui utilise l'image httpd:latest. Il mappe le port 81 de l'hôte sur le port 80 du conteneur pour éviter les conflits de ports avec la pile Nginx que nous allons déployer plus tard. Il spécifie également une seule réplique et une politique de redémarrage.

Enregistrez le fichier en appuyant sur Ctrl + X, puis Y, et Enter.

Avant de déployer, téléchargeons l'image httpd:latest.

docker pull httpd:latest

Maintenant, déployons la pile Apache en utilisant la commande docker stack deploy. Nous nommerons cette pile apache_stack.

docker stack deploy -c docker-compose.yml apache_stack

Cette commande déploie la pile Apache.

Ensuite, revenons au répertoire my-nginx-stack pour déployer à nouveau la pile Nginx.

cd ~/project/my-nginx-stack

Déployons la pile Nginx en utilisant la commande docker stack deploy. Nous nommerons cette pile nginx_stack.

docker stack deploy -c docker-compose.yml nginx_stack

Maintenant, vérifions que les deux piles ont été déployées. Listons les piles déployées.

docker stack ls

Vous devriez voir à la fois apache_stack et nginx_stack répertoriées.

Vous pouvez également vérifier les services de chaque pile individuellement.

docker stack services apache_stack
docker stack services nginx_stack

Vous devriez voir le service apache_stack_web et le service nginx_stack_web, tous deux en cours d'exécution avec 1/1 répliques.

Vous pouvez accéder au serveur web Apache en ouvrant un navigateur web et en vous rendant à l'adresse IP de votre machine virtuelle LabEx sur le port 81. Vous devriez voir la page d'accueil par défaut d'Apache. Le serveur web Nginx devrait toujours être accessible sur le port 80.

Supprimer plusieurs piles

Dans cette étape finale, vous apprendrez à supprimer plusieurs piles déployées de votre Docker Swarm. Cela est similaire à la suppression d'une seule pile, mais vous devrez répéter le processus pour chaque pile que vous souhaitez supprimer.

Dans l'étape précédente, nous avons déployé deux piles : apache_stack et nginx_stack. Nous allons maintenant les supprimer toutes les deux.

Tout d'abord, supprimons la pile apache_stack. Utilisez la commande docker stack rm suivie du nom de la pile.

docker stack rm apache_stack

Vous devriez voir une sortie indiquant que la pile apache_stack et ses services sont en cours de suppression.

Ensuite, supprimons la pile nginx_stack. Utilisez la commande docker stack rm suivie du nom de la pile.

docker stack rm nginx_stack

Vous devriez voir une sortie indiquant que la pile nginx_stack et ses services sont en cours de suppression.

Pour vérifier que les deux piles ont été supprimées, listez à nouveau les piles déployées.

docker stack ls

Ni apache_stack ni nginx_stack ne devraient apparaître dans la liste des piles déployées.

Vous pouvez également vérifier les conteneurs en cours d'exécution pour vous assurer que les conteneurs associés aux deux piles ont été supprimés.

docker ps

Il ne devrait y avoir aucun conteneur exécutant les images httpd:latest ou nginx:latest qui faisaient partie de ces piles.

Ceci conclut le laboratoire sur le déploiement et la suppression de piles Docker. Vous avez réussi à initialiser un Docker Swarm, à déployer et à supprimer des piles uniques et multiples.

Résumé

Dans ce laboratoire, vous avez appris à préparer un environnement Docker Swarm en initialisant un swarm mono - noeud et en vérifiant son statut. Vous avez ensuite pratiqué le déploiement d'une application exemple sous forme de pile en utilisant un fichier Docker Compose. Enfin, vous avez maîtrisé l'utilisation de la commande docker stack rm pour supprimer des piles déployées, que ce soit une seule pile ou plusieurs, de votre Docker Swarm, ce qui illustre le processus de nettoyage des ressources après le déploiement.