Files
docs-resku/docs/docker/swarm-cheatsheet.md

4.2 KiB

Docker Swarm Cheatsheet

Initialisation et Configuration du Swarm

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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