Docker Swarm · 6 min read · Nov 10, 2025
Comment installer et configurer un cluster Docker Swarm sur CentOS 8

Docker est un outil open-source qui peut être utilisé pour créer, déployer et exécuter des applications à l’aide d’un conteneur. Le conteneur vous permet d’emballer une application avec toutes les dépendances requises et de l’expédier sous forme d’un seul paquet.
Docker Swarm est un outil de clustering utilisé pour gérer l’hôte Docker. Il vous permet de regrouper plusieurs hôtes Docker en un seul serveur virtuel logique. De cette manière, vous pouvez mettre à l’échelle votre application horizontalement et augmenter le nombre d’instances de conteneurs. Docker Swarm offre des fonctionnalités très utiles, notamment la réparation automatique des conteneurs, l’équilibrage de charge, la mise à l’échelle des conteneurs, la découverte de services et les mises à jour progressives.
Dans cet article, nous allons vous montrer comment configurer un cluster Docker Swarm sur CentOS 8.
Prérequis
- Deux serveurs exécutant CentOS 8.
- Un mot de passe root est configuré sur chaque serveur.
Installer Docker sur les deux nœuds
Tout d’abord, vous devrez installer Docker sur les deux nœuds. Par défaut, la dernière version de Docker n’est pas incluse dans le dépôt par défaut de CentOS 8. Vous devrez donc ajouter un dépôt Docker dans votre système.
Vous pouvez l’ajouter avec la commande suivante :
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoUne fois le dépôt Docker créé, installez Docker avec la commande suivante :
dnf install docker-ce --nobestAprès avoir installé Docker, démarrez le service Docker et activez-le pour qu’il démarre au redémarrage du système avec la commande suivante :
systemctl start docker
systemctl enable dockerVous pouvez également vérifier l’état de Docker avec la commande suivante :
systemctl status dockerVous devriez obtenir la sortie suivante :
? docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-03-12 03:55:24 EST; 6s ago
Docs: https://docs.docker.com
Main PID: 2173 (dockerd)
Tasks: 8
Memory: 44.7M
CGroup: /system.slice/docker.service
??2173 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.570387991-05:00" level=error msg="Failed to built-in GetDriver graph btrfs>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617049696-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617096273-05:00" level=warning msg="Your kernel does not support cgroup bl>
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.617278059-05:00" level=info msg="Loading containers: start."
Mar 12 03:55:23 workernode dockerd[2173]: time="2021-03-12T03:55:23.884953789-05:00" level=info msg="Default bridge (docker0) is assigned with>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.039811428-05:00" level=info msg="Loading containers: done."
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066358016-05:00" level=info msg="Docker daemon" commit=363e9a8 graphdriver>
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.066498611-05:00" level=info msg="Daemon has completed initialization"
Mar 12 03:55:24 workernode systemd[1]: Started Docker Application Container Engine.
Mar 12 03:55:24 workernode dockerd[2173]: time="2021-03-12T03:55:24.119523516-05:00" level=info msg="API listen on /var/run/docker.sock"
Maintenant, vérifiez la version installée de Docker en utilisant la commande suivante :
docker --versionVous devriez voir la sortie suivante :
Docker version 20.10.5, build 55c4c88
Configurer le pare-feu
Ensuite, vous devrez autoriser les ports 2376, 2377, 7946 et 80 à travers le pare-feu sur les deux nœuds. Vous pouvez les autoriser avec la commande suivante :
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udpEnsuite, rechargez le firewalld pour appliquer les modifications :
firewall-cmd --reloadInitialiser le cluster Docker Swarm
Ensuite, vous devrez initialiser le cluster Docker Swarm sur le nœud manager. Vous pouvez le faire avec la commande suivante :
docker swarm init --advertise-addr 45.58.32.185Vous devriez obtenir la sortie suivante :
Swarm initialized: current node (cq8xpscsls2ctqhdha8lhdrph) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Vous pouvez utiliser la commande indiquée dans la sortie ci-dessus sur le nœud de travail Docker pour rejoindre le nœud au cluster.
Vous pouvez vérifier les informations du cluster Docker Swarm avec la commande suivante :
docker infoVous devriez obtenir la sortie suivante :
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.5
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: active
NodeID: cq8xpscsls2ctqhdha8lhdrph
Is Manager: true
ClusterID: m7jrgvuw1k7pvfd1qyc3mffpl
Managers: 1
Nodes: 1
Default Address Pool: 10.0.0.0/8
SubnetSize: 24
Data Path Port: 4789
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 10
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 45.58.32.185
Manager Addresses:
45.58.32.185:2377
Vous pouvez maintenant vérifier le nœud Docker Swarm avec la commande suivante :
docker node lsVous devriez obtenir la sortie suivante :
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
Ajouter un nœud de travail au cluster Docker Swarm
Ensuite, vous devrez ajouter le nœud de travail au nœud manager Docker Swarm. Vous pouvez le faire avec la commande suivante sur le nœud de travail :
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377Vous devriez obtenir la sortie suivante :
This node joined a swarm as a worker.
Sur le nœud manager Docker, vérifiez le nœud de travail avec la commande suivante :
docker node lsVous devriez voir que le nœud de travail a été ajouté au Docker Swarm :
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
bipfv8sfm94a9po0uame5rd1n workernode Ready Active 20.10.5
Lancer un service dans Docker Swarm
Ici, nous allons créer un nouveau service web Nginx et le mettre à l’échelle avec deux conteneurs. Vous pouvez le créer en exécutant la commande suivante sur le nœud manager :
docker service create -p 80:80 --name webservice --replicas 2 nginxVous devriez obtenir la sortie suivante :
agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks
1/2: running [==================================================>]
2/2: running [==================================================>]
verify: Service converged
Vous pouvez maintenant vérifier le service web avec la commande suivante :
docker service lsVous devriez voir la sortie suivante :
ID NAME MODE REPLICAS IMAGE PORTS
agyxlaswxakr webservice replicated 2/2 nginx:latest *:80->80/tcp
Vous pouvez également vérifier le conteneur en cours d’exécution avec la commande suivante :
docker psVous devriez voir la sortie suivante :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c887cad1df2e nginx:latest "/docker-entrypoint.…" 32 seconds ago Up 30 seconds 80/tcp webservice.2.jelyj9gmeb7ikl2scg7mz8yg8
Pour obtenir des informations détaillées sur le service web, exécutez la commande suivante :
docker service ps webserviceVous devriez voir la sortie suivante :
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
eye9zukwwrkq webservice.1 nginx:latest workernode Running Running 3 minutes ago
jelyj9gmeb7i webservice.2 nginx:latest masternode Running Running 3 minutes ago
Vérifier Docker Swarm
À ce stade, nous avons déployé un conteneur Nginx sur les nœuds du cluster, y compris le nœud de gestion. Vous pouvez maintenant accéder à votre serveur web Nginx en utilisant n’importe quelle adresse IP de nœud de travail ou de nœud manager :

Conclusion
Dans le guide ci-dessus, vous avez appris comment configurer le cluster Docker Swarm sur CentOS 8. Vous pouvez maintenant ajouter n’importe quel nombre de nœuds de travail au cluster Docker Swarm et mettre à l’échelle votre application.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.