Ajouter docs/docker/swarm-cheatsheet

This commit is contained in:
2025-02-27 20:53:37 +00:00
parent 942a840846
commit 8e9b1485c5

View File

@@ -0,0 +1,202 @@
# Docker Swarm Cheatsheet
## Initialisation et Configuration du Swarm
```bash
# Initialiser un nouveau swarm
docker swarm init --advertise-addr <MANAGER-IP>
# Obtenir le token pour ajouter un worker
docker swarm join-token worker
# Obtenir le token pour ajouter un manager
docker swarm join-token manager
# Rejoindre un swarm en tant que worker
docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>
# Rejoindre un swarm en tant que manager
docker swarm join --token <MANAGER-TOKEN> <MANAGER-IP>:<PORT>
# Quitter un swarm
docker swarm leave [--force]
```
## Gestion des Nœuds
```bash
# Lister tous les nœuds du swarm
docker node ls
# Inspecter un nœud
docker node inspect <NODE-ID>
# Promouvoir un worker en manager
docker node promote <NODE-ID>
# Rétrograder un manager en worker
docker node demote <NODE-ID>
# Mettre un nœud en pause (drain)
docker node update --availability drain <NODE-ID>
# Remettre un nœud en service
docker node update --availability active <NODE-ID>
# Ajouter des labels à un nœud
docker node update --label-add <KEY>=<VALUE> <NODE-ID>
# Supprimer un nœud du swarm
docker node rm [--force] <NODE-ID>
```
## Services
```bash
# Créer un service
docker service create --name <SERVICE-NAME> --replicas <NUM> <IMAGE>
# Créer un service avec des options avancées
docker service create \
--name <SERVICE-NAME> \
--replicas <NUM> \
--constraint node.role==manager \
--publish <PORT>:<TARGET-PORT> \
--mount type=volume,source=<VOLUME-NAME>,destination=<CONTAINER-PATH> \
--env <ENV-VAR>=<VALUE> \
--network <NETWORK-NAME> \
<IMAGE>
# Lister tous les services
docker service ls
# Voir les tâches d'un service (conteneurs)
docker service ps <SERVICE-NAME>
# Inspecter un service
docker service inspect <SERVICE-NAME>
# Mettre à jour un service
docker service update \
--image <NEW-IMAGE> \
--replicas <NEW-NUM> \
--update-parallelism <NUM> \
--update-delay <SECONDS>s \
<SERVICE-NAME>
# Faire une mise à jour progressive (rolling update)
docker service update --update-parallelism 2 --update-delay 20s <SERVICE-NAME>
# Supprimer un service
docker service rm <SERVICE-NAME>
# Mettre à l'échelle un service (scale)
docker service scale <SERVICE-NAME>=<NUM-REPLICAS>
# Logs d'un service
docker service logs <SERVICE-NAME>
```
## Stacks
```bash
# Déployer une stack depuis un fichier compose
docker stack deploy -c <COMPOSE-FILE> <STACK-NAME>
# Lister toutes les stacks
docker stack ls
# Lister les services d'une stack
docker stack services <STACK-NAME>
# Lister les tâches d'une stack
docker stack ps <STACK-NAME>
# Supprimer une stack
docker stack rm <STACK-NAME>
```
## Secrets
```bash
# Créer un secret à partir d'un fichier
docker secret create <SECRET-NAME> <FILE-PATH>
# Créer un secret à partir de l'entrée standard
echo "secret-data" | docker secret create <SECRET-NAME> -
# Lister les secrets
docker secret ls
# Inspecter un secret
docker secret inspect <SECRET-NAME>
# Supprimer un secret
docker secret rm <SECRET-NAME>
# Utiliser un secret dans un service
docker service create \
--name <SERVICE-NAME> \
--secret <SECRET-NAME> \
<IMAGE>
```
## Configs
```bash
# Créer une config à partir d'un fichier
docker config create <CONFIG-NAME> <FILE-PATH>
# Lister les configs
docker config ls
# Inspecter une config
docker config inspect <CONFIG-NAME>
# Supprimer une config
docker config rm <CONFIG-NAME>
# Utiliser une config dans un service
docker service create \
--name <SERVICE-NAME> \
--config <CONFIG-NAME> \
<IMAGE>
```
## Réseaux Overlay
```bash
# Créer un réseau overlay
docker network create --driver overlay <NETWORK-NAME>
# Créer un réseau overlay chiffré
docker network create --driver overlay --opt encrypted <NETWORK-NAME>
# Lister les réseaux
docker network ls
# Inspecter un réseau
docker network inspect <NETWORK-NAME>
# Supprimer un réseau
docker network rm <NETWORK-NAME>
```
## Diagnostic et Maintenance
```bash
# Vérifier l'état du swarm
docker info
# Voir les événements du swarm
docker events --filter 'scope=swarm'
# Unlock swarm (après un redémarrage du manager si autolock est activé)
docker swarm unlock
# Obtenir la clé de déverrouillage (à sauvegarder)
docker swarm unlock-key
# Faire tourner la clé de déverrouillage
docker swarm unlock-key --rotate
```