diff --git a/HowtoDocker.md b/HowtoDocker.md index 3132482c..44034549 100644 --- a/HowtoDocker.md +++ b/HowtoDocker.md @@ -591,47 +591,65 @@ docker0# docker swarm join-token Les _labels_ servent notamment à définir des contraintes de placement des services lors de l'utilisation de _docker stack_. +### Drainer une machine du cluster + +Pour effectuer un maintenance ou autre sur une machine (node), il faut la drainer (déplacer tous ses conteneurs vers les autres noeuds) + +~~~ +# docker node update --availability drain +~~~ + +On peut verifier qu'il n'y a plus de services qui tournent sur cette machines [#lister-toute-les-tasks-de-tous-les-services-sans-docker-service](#lister-toute-les-tasks-de-tous-les-services-sans-docker-service) ### Supprimer une machine du cluster +De préférence après avoir drainé le noeud + ~~~ # docker node rm ~~~ - ## Compose/stack (docker stack) Docker permet de déployer des infrastructures multi-conteneurs (_stacks_) simplement à l'aide de `docker stack` (anciennement Docker Compose, logiciel tier). Il est très utile dans le cadre de déploiement sur un cluster Swarm. L'infra est à décrire dans un fichier YAML. -Déployer (ou mettre à jour à chaud) une nouvelle _stack_ : +### Déployer (ou mettre à jour à chaud) une nouvelle _stack_ ~~~ # docker stack deploy -c ~~~ -Lister les _stacks_ : +### Lister les _stacks_ ~~~ # docker stack ls ~~~ -Lister les _services_, toutes _stacks_ confondues ou pour une _stack_ donnée : +### Lister les _services_, toutes _stacks_ confondues ou pour une _stack_ donnée ~~~ # docker service ls # docker stack services ~~~ -Lister les _tasks_ (replicas) d'une _stack_ ou d'un _service_ donné : +### Lister les _tasks_ (replicas) d'une _stack_ ou d'un _service_ donné ~~~ # docker stack ps # docker service ps ~~~ -Supprimer une _stack_ : +### Lister toute les _tasks_ de tous les _services_ (sans docker service) + +~~~ +# for stack_name in $(docker stack ls --format "table {{.Name}}");do docker stack ps $stack_name ;done ; +# On peut aussi filtrer avec les task uniquement sur un noeud de la swarm +# for stack_name in $(docker stack ls --format "table {{.Name}}");do docker stack ps $stack_name --filter "NODE=nodeName" ;done ; +~~~ + +### Supprimer une _stack_ ~~~ # docker stack rm @@ -1048,3 +1066,14 @@ vous pouvez en désespoir de cause redémarrer le démon Docker. En fonction de la configuration, redémarrer le démon Docker peut éteindre les conteneurs en cours d'exécution… ou pas. [`live-restore`](https://docs.docker.com/config/containers/live-restore/) devrait permettre ça mais ça ne fonctionne par sur Debian 11. + +## docker service ls `Error response from daemon: rpc error: code = Unimplemented desc = unknown method ListServiceStatuses` + +Cette erreur peut arriver quand un noeud de la swarm est dans une version plus ancienne, différente de celle des autres noeud + +~~~ +# docker node ls +xxxxxxxxxxxxxxx appxx Ready Active Leader 18.09.7 +~~~ + +Il faut alors mettre à jour docker sur ce noeud.