diff --git a/README.md b/README.md index 0848deae900b6add27a0d506670da09780680a7d..183148e35f6613cb0935bc9714d48c6701f81d9e 100644 --- a/README.md +++ b/README.md @@ -323,3 +323,40 @@ Corrigez les erreurs remontées par le linter. Reprenez le fichier `Dockerfile` que vous avez créé pour l'exercice 01 de la session 3 et soumettez le à Hadolint. Corrigez les erreurs remontées par le linter. + +## Exercice 06 : Les bases du clustering avec Docker Swarm + +Nous allons faire un petit exercice qui permet de découvrir les bases de la scalabilité horizontale avec Docker. La première opération consiste à activer le mode Swarm pour Docker de la manière suivante : + +```sh +$ docker swarm init +``` + +Une fois cette étape vérifiée, arrêtez cela et détruisez votre conteneur ... nous allons passer à la mise en oeuvre de la scalabilité. La commande ci-après permet de vérifier la composition de votre cluster Swarm : + +```sh +$ docker node ls +ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION +rfp5xn9ycgr95i6ocfkyj8xo3 * docker-desktop Ready Active Leader 26.1.4 +``` + +La commande `docker service` est utilisée lors de la gestion d'un service individuel dans un cluster Swarm ([https://docs.docker.com/reference/cli/docker/service/(https://docs.docker.com/reference/cli/docker/service/)]). + +Voici une idée de ce qu'un service peut définir comme comportement et état d'un conteneur : + +- Le nom de l'image et le tag que les conteneurs du nœud doivent exécuter ; +- Combien de conteneurs participent au service ; +- Les ports à exposer à l'extérieur du cluster Swarm ; +- Comment doit agir le conteneur suite à une erreur ; +- Les caractéristiques des nœuds sur lesquels le service peut s'exécuter (telles que des contraintes de ressources et ou de préférence de placement sur tel ou tel nœud) ; +- etc ... + +C'est déjà pas mal non ? Pour l'exemple nous souhaitons spécifier les comportements suivants : + +- Un conteneur qui se base sur l'image https://hub.docker.com/r/traefik/whoami/. +- Trois conteneurs doivent être exécutés au minimum. +- Redémarrer le conteneur s'il se ferme suite à une erreur. +- Limiter l'utilisation de la mémoire à 100 Mo +- Mapper le port 5001 sur le port 80/tcp + +Proposez une commande pour Swarm, à l'aide de la documentation en ligne, qui permet de réaliser le déploiement de ce service. \ No newline at end of file