Comment utiliser la commande docker service rollback pour annuler les mises à jour de service

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 à gérer efficacement les mises à jour de services dans un environnement Docker Swarm. Nous commencerons par créer un service Docker Swarm, qui servira de base pour le déploiement et la mise à l'échelle d'applications conteneurisées.

Après avoir créé le service, vous effectuerez une mise à jour de la configuration du service, simulant ainsi un scénario de déploiement typique. L'objectif principal de ce laboratoire est ensuite de montrer comment utiliser la commande docker service rollback pour revenir à la version stable précédente du service. Enfin, vous vérifierez la configuration du service après le rollback pour confirmer la restauration réussie.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555230{{"Comment utiliser la commande docker service rollback pour annuler les mises à jour de service"}} docker/ps -.-> lab-555230{{"Comment utiliser la commande docker service rollback pour annuler les mises à jour de service"}} docker/inspect -.-> lab-555230{{"Comment utiliser la commande docker service rollback pour annuler les mises à jour de service"}} docker/create -.-> lab-555230{{"Comment utiliser la commande docker service rollback pour annuler les mises à jour de service"}} docker/pull -.-> lab-555230{{"Comment utiliser la commande docker service rollback pour annuler les mises à jour de service"}} end

Créer un service Docker Swarm

Dans cette étape, nous apprendrons à créer un service Docker Swarm. Un service Docker Swarm est un ensemble de tâches qui s'exécutent sur un cluster Swarm. Chaque tâche est une instance d'un conteneur. Les services sont le concept central de Docker Swarm, vous permettant de définir combien de répliques d'une image de conteneur doivent être en cours d'exécution et comment elles doivent être mises à jour.

Avant de créer un service, nous devons initialiser un Docker Swarm. Étant donné que nous exécutons sur une seule machine virtuelle (VM), nous allons initialiser un Swarm à un seul nœud.

Tout d'abord, initialisons le Swarm :

docker swarm init --advertise-addr 127.0.0.1

Vous devriez voir un message indiquant que le Swarm a été initialisé et que le nœud actuel est maintenant un gestionnaire (manager).

Maintenant, créons un service en utilisant l'image nginx. Nous nommerons le service my-nginx et spécifierons que nous voulons 3 répliques du conteneur nginx en cours d'exécution.

Tout d'abord, téléchargeons l'image nginx pour nous assurer qu'elle est disponible localement :

docker pull nginx:latest

Maintenant, créons le service :

docker service create --name my-nginx --replicas 3 nginx:latest

Cette commande crée un nouveau service nommé my-nginx avec 3 répliques en utilisant l'image nginx:latest. Docker Swarm distribuera automatiquement ces répliques sur les nœuds du Swarm (dans ce cas, juste notre seul nœud).

Pour vérifier que le service a été créé et que les répliques sont en cours d'exécution, vous pouvez lister les services :

docker service ls

Vous devriez voir my-nginx répertorié avec 3/3 répliques en cours d'exécution.

Vous pouvez également inspecter les tâches associées au service :

docker service ps my-nginx

Cette commande vous montrera les tâches individuelles (conteneurs) qui composent le service my-nginx, leur état actuel et le nœud sur lequel elles s'exécutent. Vous devriez voir 3 tâches dans l'état Running.

Mettre à jour le service avec une nouvelle configuration

Dans cette étape, nous allons mettre à jour le service my-nginx pour utiliser une autre version de l'image nginx. Cela montre comment effectuer une mise à jour progressive (rolling update) d'un service dans Docker Swarm.

Tout d'abord, téléchargeons l'image nginx:1.21. C'est une version spécifique de Nginx que nous allons utiliser pour mettre à jour notre service.

docker pull nginx:1.21

Maintenant, mettons à jour le service my-nginx pour utiliser l'image nginx:1.21. Nous allons également modifier le nombre de répliques à 5.

docker service update --image nginx:1.21 --replicas 5 my-nginx

Cette commande indique à Docker Swarm de mettre à jour le service my-nginx. Le paramètre --image nginx:1.21 spécifie la nouvelle image à utiliser, et le paramètre --replicas 5 modifie le nombre de répliques souhaité à 5. Docker Swarm effectuera une mise à jour progressive, remplaçant les anciens conteneurs par de nouveaux exécutant l'image spécifiée et ajustant le nombre de répliques.

Vous pouvez suivre la progression de la mise à jour en listant les tâches du service :

docker service ps my-nginx

Vous verrez de nouvelles tâches être créées avec l'image nginx:1.21 et les anciennes tâches être arrêtées. Finalement, vous devriez voir 5 tâches dans l'état Running, toutes utilisant l'image nginx:1.21.

Vous pouvez également vérifier les détails du service pour confirmer la mise à jour :

docker service inspect my-nginx --pretty

Recherchez les champs Image et Replicas dans la sortie pour confirmer qu'ils ont été mis à jour respectivement à nginx:1.21 et 5.

Restaurer le service à la version précédente

Dans cette étape, nous allons restaurer le service my-nginx à sa configuration précédente. Docker Swarm garde une trace des configurations de service précédentes, vous permettant de revenir facilement à un état connu et fonctionnel si une mise à jour introduit des problèmes.

Pour restaurer le service, nous utilisons la commande docker service update avec le paramètre --rollback.

docker service update --rollback my-nginx

Cette commande indique à Docker Swarm de restaurer le service my-nginx à la configuration qu'il avait avant la dernière mise à jour. Dans notre cas, cela signifie revenir à l'image nginx:latest et au nombre original de répliques (qui était 3).

Vous pouvez suivre le processus de restauration en listant les tâches du service :

docker service ps my-nginx

Vous verrez les tâches exécutant l'image nginx:1.21 être arrêtées et de nouvelles tâches exécutant l'image nginx:latest être créées. Le nombre de tâches s'ajustera également pour revenir au nombre de répliques précédent.

Une fois la restauration terminée, vous devriez voir des tâches exécutant l'image nginx:latest et le nombre de répliques devrait être revenu à 3.

Vous pouvez également inspecter les détails du service pour confirmer la restauration :

docker service inspect my-nginx --pretty

Recherchez les champs Image et Replicas dans la sortie. Ils devraient maintenant refléter la configuration avant la dernière mise à jour.

Vérifier la configuration du service après la restauration

Dans cette étape, nous allons vérifier explicitement que le service my-nginx a été restauré avec succès à sa configuration précédente. Cela implique de vérifier à la fois l'image utilisée par le service et le nombre de répliques.

Tout d'abord, listons les services pour voir l'état actuel :

docker service ls

Vous devriez voir my-nginx dans la liste, et la colonne REPLICAS devrait afficher 3/3. Cela indique qu'il y a 3 répliques souhaitées et que 3 sont actuellement en cours d'exécution.

Ensuite, inspectons les détails du service pour confirmer l'image et le nombre de répliques.

docker service inspect my-nginx --pretty

Dans la sortie, recherchez le champ Image. Il devrait maintenant être nginx:latest. De plus, recherchez le champ Replicas, qui devrait être 3.

Enfin, examinons les tâches associées au service pour confirmer que les conteneurs en cours d'exécution utilisent l'image correcte.

docker service ps my-nginx

Vous devriez voir 3 tâches listées, et la colonne IMAGE de chaque tâche devrait être nginx:latest. L'état actuel (CURRENT STATE) de toutes les tâches devrait être Running.

En effectuant ces vérifications, nous pouvons être confiants que la restauration a réussi et que le service fonctionne dans l'état précédent souhaité.

Résumé

Dans ce laboratoire (lab), nous avons appris à gérer les services Docker Swarm, en nous concentrant particulièrement sur leur création et leur mise à jour. Nous avons commencé par initialiser un Docker Swarm mono - noeud, puis nous avons créé un service nommé my-nginx avec trois répliques en utilisant l'image nginx:latest. Nous avons vérifié la création du service et les tâches en cours d'exécution à l'aide des commandes docker service ls et docker service ps.

Après la création du service, nous avons exploré comment mettre à jour la configuration du service. Cela impliquait de changer l'image utilisée par le service, illustrant ainsi un scénario courant de mise à jour de service dans un environnement Swarm.