ajout drain et lister toute les task +

ajout des titres les element dans compose/stack
This commit is contained in:
Tom David--Broglio 2023-12-11 18:30:16 +01:00
parent 02adaa4fda
commit 2fd3144f09

View file

@ -591,47 +591,65 @@ docker0# docker swarm join-token <manager|worker>
Les _labels_ servent notamment à définir des contraintes de placement des Les _labels_ servent notamment à définir des contraintes de placement des
services lors de l'utilisation de _docker stack_. 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 <noeud>
~~~
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 ### Supprimer une machine du cluster
De préférence après avoir drainé le noeud
~~~ ~~~
# docker node rm <hash-machine> # docker node rm <hash-machine>
~~~ ~~~
## Compose/stack (docker stack) ## 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. 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. 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 <stack_name.yml> <stack name> # docker stack deploy -c <stack_name.yml> <stack name>
~~~ ~~~
Lister les _stacks_ : ### Lister les _stacks_
~~~ ~~~
# docker stack ls # 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 service ls
# docker stack services <stack name> # docker stack services <stack name>
~~~ ~~~
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 <stack name> # docker stack ps <stack name>
# docker service ps <service name> # docker service ps <service name>
~~~ ~~~
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 <stack name> # docker stack rm <stack name>
@ -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. 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. [`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.