202 lines
4.2 KiB
Plaintext
202 lines
4.2 KiB
Plaintext
# 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
|
|
``` |