TP08 - Annexe : Utiliser un VPS comme manager Docker Swarm
Sur certains postes, Docker Desktop ne permet pas de reproduire correctement un environnement Swarm.
L’objectif de cette annexe est donc de préparer un VPS Linux, d’y installer Docker Engine, puis de l’initialiser comme nœud manager Swarm.
Les commandes Docker pourront ensuite être lancées depuis votre PC grâce à un contexte Docker distant en SSH.
Prérequis
- Un VPS Ubuntu accessible en SSH.
- Les informations de connexion au VPS :
IP_VPS, par exemple203.0.113.10USER_VPS, par exempleubuntu- un mot de passe ou une clé SSH
- Docker Desktop installé sur votre PC, ou au minimum le client Docker
docker.
Dans cette annexe, Docker Desktop n’est pas utilisé comme noeud du Swarm. Il sert uniquement à fournir le client Docker local, qui pilotera le moteur Docker installé sur le VPS via le contexte distant.
1) Installer Docker Engine sur le VPS
Se connecter au VPS :
ssh USER_VPS@IP_VPS
````
Mettre à jour le système :
```bash
sudo apt update
sudo apt install -y ca-certificates curl
Ajouter le dépôt officiel Docker :
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Installer Docker Engine :
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
Vérifier que Docker fonctionne :
Autoriser l’utilisateur courant à utiliser Docker sans sudo :
Se reconnecter au VPS :
Puis vérifier que Docker fonctionne sans sudo :
2) Initialiser le VPS comme manager Swarm
Sur le VPS, initialiser le Swarm :
Exemple :
Vérifier que le VPS est bien manager :
Le VPS doit apparaître avec les rôles suivants :
À ce stade, le Swarm est fonctionnel avec un seul noeud manager.
3) Créer un contexte Docker distant depuis votre PC
Sur votre PC, dans un terminal local, créer un contexte Docker qui pointe vers le VPS en SSH :
Exemple :
Activer ce contexte :
Vérifier que les commandes Docker ciblent bien le VPS :
Si la commande répond avec les informations du Docker Engine installé sur le VPS, le contexte distant fonctionne correctement.
Pour revenir au Docker local de Docker Desktop :
4) Utiliser le VPS pour le TP08
Avec le contexte tp8-vps actif, les commandes Docker lancées depuis votre PC s’exécutent sur le VPS.
Vérifier le contexte actif :
Le contexte actif est marqué par une étoile *.
Exemple :
NAME DESCRIPTION DOCKER ENDPOINT
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
tp8-vps * ssh://ubuntu@203.0.113.10
Activer le contexte du VPS si nécessaire :
Les commandes du TP peuvent maintenant être exécutées depuis votre PC, mais elles agiront sur le Swarm du VPS :
Exemple de déploiement d’une stack :
Vérifier les services :
Vérifier les tâches d’un service :
Scaler un service :
5) Optionnel : ajouter plusieurs VPS comme noeuds Swarm
Si vous disposez de plusieurs VPS, vous pouvez les connecter au même Swarm afin d’obtenir plusieurs noeuds.
Dans ce cas :
- le premier VPS reste le manager ;
- les autres VPS deviennent des workers ;
- chaque VPS doit avoir Docker Engine installé ;
- les VPS doivent pouvoir communiquer entre eux sur les ports nécessaires à Swarm.
Sur le VPS manager, récupérer la commande de jonction pour un worker :
La commande affichée ressemble à ceci :
Sur chaque VPS worker, exécuter la commande affichée par le manager :
Puis, sur le manager, vérifier les noeuds du Swarm :
Vous devriez voir le manager et les workers.
Pour un Swarm multi-noeuds, les ports suivants doivent être autorisés entre les VPS :
2377/tcppour la communication avec le manager Swarm ;7946/tcpet7946/udppour la découverte entre noeuds ;4789/udppour le réseau overlay.