docker swarm init --advertise-addr IP_VISIBLE
L'éxécution donne la commande pour rejoindre le nœud,
Voir les nœuds :
docker node ls
Obtenir les tokens pour rejoindre
docker swarm join-token worker
docker swarm join-token manager
docker node rm WORKER_NAME
Sur le maitre :
docker service create --replicas NB_REPLICAS -p 80:80 --name INSTANCE_NAME IMAGE
Voir les services :
docker service ls
Voir les instances lancées :
docker service ps [INSTANCE_NAME]
docker node update --availability drain NODE_NAME
Pour voir si ça fonctionne : docker service ps INSTANCE_NAME
Pour le remettre actif, mettre --availability active
docker service scale INSTANCE_NAME=TOTAL
Pour voir si ça fonctionne : docker service ls
docker service rm INSTANCE_NAME
Pour voir si ça fonctionne : docker service ls
Soi-même :
docker node inspect self
Un autre nœud
docker node inspect NAME
Service(s) en éxécution
docker node ps NAME
docker service update --image IMAGE:TAG INSTANCE_NAME
Pour voir si ça fonctionne : docker service ls
NON NOTÉ ! Utiliser toutes les commandes vues précédemment pour voir le résultat qu'elles produisent.
Afin de facilité le travail, on va mettre en place un nginx pour commencer.
Ensuite, tenter avec une application web qui affiche une IP par exemple.
NON NOTÉ ! Reprendre le TP (Celui sur les IPs du cours précédent) et utiliser la scalabilité pour faire apparaitre les IPs.
NON NOTÉ ! Reprendre le cours sur le Dockerfile, et utiliser la propriété HEALTHCHECK (cf. Vers la fin).
NOTÉ ! A faire en groupe (2 personnes max. sauf exception de ma part)
Petit projet composé de deux sous projets :
Prévoir un projet Gitlab (la forge) avec moi en collaborateur (prévoir des sous dossiers si vous faites un slave vous même)
Voir les diapos suivantes
Votre infrastructure devra pouvoir répondre à des résolutions de hash MD5. Si la charge de travail (monitorer) devient trop importante, des containers devront être créer. Et inversement.
Il y aura donc des serveurs en écoute (scalabilité), un container capable de changer la scalabilité, et éventuellement une base de données capable de stocker les hash réussi (Redis ?).
Une petite appli capable d'envoyer des requètes (HTTP ou WebSocket) vers cette infra. Une petite interface utilisateur permettant de choisir des modes gentils, normals, agressifs est requise.
Le plus, serait d'avoir le monitoring plus ou moins (5 - 10 secondes) de l'infrastructure (idem par HTTP ou WebSocket par exemple).
Comment accède-t-on à Docker dans un container ? Avec cette image (docker:dind).
L'esclave pour gagner du temps : Docker hub