Comment utiliser la commande docker service scale pour augmenter l'échelle des 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 (lab), vous apprendrez à gérer efficacement le nombre d'instances exécutées (répliques) de vos services au sein d'un Docker Swarm. Nous commencerons par créer un service répliqué, en établissant une base avec plusieurs copies en cours d'exécution.

Après la création, vous explorerez comment ajuster dynamiquement l'échelle du service. Cela inclut le redimensionnement (scaling) d'un seul service pour répondre à une demande accrue, le redimensionnement à la baisse, jusqu'à zéro répliques, et enfin, le redimensionnement simultané de plusieurs services pour gérer des déploiements complexes. Grâce à des commandes pratiques, vous acquerrez une expérience concrète dans l'utilisation de la commande docker service scale pour obtenir une haute disponibilité et une optimisation des ressources pour vos applications conteneurisées.


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/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555231{{"Comment utiliser la commande docker service scale pour augmenter l'échelle des services"}} docker/ps -.-> lab-555231{{"Comment utiliser la commande docker service scale pour augmenter l'échelle des services"}} docker/rm -.-> lab-555231{{"Comment utiliser la commande docker service scale pour augmenter l'échelle des services"}} docker/inspect -.-> lab-555231{{"Comment utiliser la commande docker service scale pour augmenter l'échelle des services"}} docker/pull -.-> lab-555231{{"Comment utiliser la commande docker service scale pour augmenter l'échelle des services"}} end

Créer un service répliqué

Dans cette étape, nous apprendrons à créer un service répliqué en utilisant Docker. Un service répliqué signifie que plusieurs copies identiques (répliques) de votre service sont exécutées simultanément. Cela offre une haute disponibilité et vous permet de gérer plus de trafic.

Tout d'abord, téléchargeons l'image Docker nécessaire. Nous utiliserons l'image alpine pour cet exemple.

docker pull alpine

Vous devriez voir un affichage indiquant que l'image est en cours de téléchargement.

Maintenant, créons un service répliqué nommé my-alpine-service avec 3 répliques. Nous utiliserons l'image alpine et la commande ping localhost. Cette commande s'exécutera à l'intérieur de chaque conteneur et enverra continuellement des pings au localhost.

docker service create --name my-alpine-service --replicas 3 alpine ping localhost

Après avoir exécuté cette commande, Docker Swarm créera le service et démarrera le nombre spécifié de répliques. Vous devriez voir un affichage confirmant la création du service.

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-alpine-service répertorié avec 3 répliques.

Vous pouvez également inspecter le service pour obtenir plus de détails.

docker service inspect my-alpine-service

Cette commande affichera un grand objet JSON contenant des informations détaillées sur le service, y compris le nombre de répliques.

Enfin, vérifions les tâches associées au service pour voir les conteneurs individuels en cours d'exécution.

docker service ps my-alpine-service

Cette commande affichera l'état de chaque réplique (tâche) du service. Vous devriez voir 3 tâches répertoriées, chacune en état d'exécution.

Augmenter l'échelle (scaling up) d'un seul service

Dans cette étape, nous apprendrons à augmenter l'échelle d'un seul service. Augmenter l'échelle signifie augmenter le nombre de répliques d'un service. Cela est utile lorsque vous avez besoin de gérer une charge ou un trafic accru.

Dans l'étape précédente, nous avons créé un service nommé my-alpine-service avec 3 répliques. Maintenant, augmentons l'échelle de ce service à 5 répliques. Nous pouvons utiliser la commande docker service scale pour cela.

docker service scale my-alpine-service=5

Après avoir exécuté cette commande, Docker Swarm ajoutera 2 nouvelles répliques au service. Vous devriez voir un affichage indiquant que le service est en cours de mise à jour.

Pour vérifier que l'échelle du service a été augmentée, vous pouvez lister les services à nouveau.

docker service ls

Vous devriez maintenant voir my-alpine-service répertorié avec 5 répliques.

Vous pouvez également vérifier les tâches associées au service pour voir les conteneurs nouvellement créés.

docker service ps my-alpine-service

Cette commande affichera l'état de toutes les 5 répliques (tâches) du service. Vous devriez voir 5 tâches répertoriées, les nouvelles en cours de transition vers un état d'exécution.

Réduire l'échelle (scaling down) d'un seul service à zéro

Dans cette étape, nous apprendrons à réduire l'échelle d'un seul service jusqu'à zéro répliques. Réduire l'échelle à zéro arrête effectivement toutes les instances du service. Cela peut être utile pour arrêter temporairement un service sans supprimer sa configuration.

Dans l'étape précédente, nous avons augmenté l'échelle du service my-alpine-service à 5 répliques. Maintenant, réduisons l'échelle de ce service à 0 répliques. Nous allons utiliser à nouveau la commande docker service scale.

docker service scale my-alpine-service=0

Après avoir exécuté cette commande, Docker Swarm arrêtera et supprimera toutes les répliques en cours d'exécution du service. Vous devriez voir un affichage indiquant que le service est en cours de mise à jour.

Pour vérifier que l'échelle du service a été réduite à zéro, vous pouvez lister les services.

docker service ls

Vous devriez maintenant voir my-alpine-service répertorié avec 0 répliques.

Vous pouvez également vérifier les tâches associées au service.

docker service ps my-alpine-service

Cette commande affichera l'état des tâches. Étant donné que nous avons réduit l'échelle à zéro, il ne devrait y avoir aucune tâche en cours d'exécution répertoriée. Vous pourriez voir des tâches dans un état "Shutdown", indiquant qu'elles ont été arrêtées.

Augmenter l'échelle (scaling) de plusieurs services

Dans cette étape, nous apprendrons à augmenter l'échelle de plusieurs services simultanément. Cela est utile lorsque vous avez plusieurs services qui doivent être mis à l'échelle ensemble, par exemple, différents composants d'une application.

Tout d'abord, créons un autre service. Nous allons créer un service nommé my-nginx-service en utilisant l'image nginx avec 1 réplique. Nous devons d'abord télécharger (pull) l'image nginx.

docker pull nginx

Vous devriez voir un affichage indiquant que l'image nginx est en cours de téléchargement.

Maintenant, créons le service my-nginx-service.

docker service create --name my-nginx-service --replicas 1 nginx

Vous devriez voir un affichage confirmant la création du service my-nginx-service.

Maintenant, nous avons deux services : my-alpine-service (actuellement mis à l'échelle à 0) et my-nginx-service (mis à l'échelle à 1). Mettons à l'échelle les deux services à la fois. Nous allons augmenter l'échelle de my-alpine-service à 2 répliques et de my-nginx-service à 3 répliques.

docker service scale my-alpine-service=2 my-nginx-service=3

Après avoir exécuté cette commande, Docker Swarm mettra à jour les deux services en fonction des nombres de répliques spécifiés. Vous devriez voir un affichage indiquant que les deux services sont en cours de mise à jour.

Pour vérifier que les deux services ont été mis à l'échelle, vous pouvez lister les services.

docker service ls

Vous devriez maintenant voir my-alpine-service répertorié avec 2 répliques et my-nginx-service répertorié avec 3 répliques.

Vous pouvez également vérifier les tâches de chaque service individuellement pour voir les conteneurs en cours d'exécution.

docker service ps my-alpine-service

Cela affichera les 2 tâches en cours d'exécution pour my-alpine-service.

docker service ps my-nginx-service

Cela affichera les 3 tâches en cours d'exécution pour my-nginx-service.

Enfin, nettoyons les services que nous avons créés. Nous pouvons supprimer les deux services en utilisant la commande docker service rm.

docker service rm my-alpine-service my-nginx-service

Vous devriez voir un affichage confirmant la suppression des deux services.

Pour vérifier que les services ont été supprimés, listez les services à nouveau.

docker service ls

Aucun service ne devrait être répertorié.

Résumé

Dans ce laboratoire (lab), nous avons appris à gérer l'augmentation de l'échelle (scaling) des services Docker. Nous avons commencé par créer un service répliqué avec un nombre spécifié de répliques, démontrant le déploiement initial d'une application tolérante aux pannes. Nous avons ensuite exploré comment ajuster dynamiquement le nombre d'instances en cours d'exécution pour un seul service, d'abord en augmentant son échelle pour répondre à une demande accrue, puis en la réduisant, y compris en ramenant le nombre de répliques à zéro pour arrêter effectivement le service.

Enfin, nous avons appris à augmenter l'échelle de plusieurs services simultanément, mettant en évidence la capacité à gérer l'allocation de ressources pour plusieurs applications dans un environnement Docker Swarm avec une seule commande. Ces étapes ont fourni une expérience pratique dans l'utilisation de la commande docker service scale pour gérer efficacement le cycle de vie et l'utilisation des ressources des services.