Docker Swarm · 5 min read · Nov 10, 2025
Come Installare e Configurare un Cluster Docker Swarm su CentOS 8

Docker è uno strumento open-source che può essere utilizzato per creare, distribuire e eseguire applicazioni utilizzando un contenitore. Il contenitore consente di impacchettare un’applicazione con tutte le dipendenze necessarie e di distribuirla come un unico pacchetto.
Docker Swarm è uno strumento di clustering utilizzato per gestire l’host Docker. Ti consente di raggruppare più host Docker in un unico server virtuale logico. In questo modo puoi scalare orizzontalmente la tua applicazione e aumentare il numero delle istanze del contenitore. Docker Swarm offre funzionalità molto utili tra cui, auto-ripristino dei contenitori, bilanciamento del carico, scalabilità dei contenitori, scoperta dei servizi e aggiornamenti progressivi.
In questo post, ti mostreremo come configurare un cluster Docker Swarm su CentOS 8.
Requisiti
- Due server che eseguono CentOS 8.
- Una password di root configurata su ciascun server.
Installa Docker su Entrambi i Nodi
Per prima cosa, dovrai installare Docker su entrambi i nodi. Per impostazione predefinita, l’ultima versione di Docker non è inclusa nel repository predefinito di CentOS 8. Quindi dovrai aggiungere un repository Docker nel tuo sistema.
Puoi aggiungerlo con il seguente comando:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoUna volta creato il repository Docker, installa Docker con il seguente comando:
dnf install docker-ce --nobestDopo aver installato Docker, avvia il servizio Docker e abilitalo per l’avvio al riavvio del sistema con il seguente comando:
systemctl start docker
systemctl enable dockerPuoi anche verificare lo stato di Docker con il seguente comando:
systemctl status dockerDovresti ottenere il seguente output:
? 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"
Ora, verifica la versione installata di Docker utilizzando il seguente comando:
docker --versionDovresti vedere il seguente output:
Docker version 20.10.5, build 55c4c88
Configura il Firewall
Successivamente, dovrai consentire le porte 2376, 2377, 7946 e 80 attraverso il firewall su entrambi i nodi. Puoi consentirle con il seguente comando:
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/udpSuccessivamente, ricarica il firewalld per applicare le modifiche:
firewall-cmd --reloadInizializza il Cluster Docker Swarm
Successivamente, dovrai inizializzare il cluster Docker Swarm sul nodo manager. Puoi farlo con il seguente comando:
docker swarm init --advertise-addr 45.58.32.185Dovresti ottenere il seguente output:
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.
Puoi utilizzare il comando mostrato nell’output sopra nel nodo worker Docker per unire il nodo al cluster.
Puoi controllare le informazioni del cluster Docker Swarm con il seguente comando:
docker infoDovresti ottenere il seguente output:
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
Puoi ora verificare il nodo Docker Swarm con il seguente comando:
docker node lsDovresti ottenere il seguente output:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
Aggiungi Nodo Worker al Cluster Docker Swarm
Successivamente, dovrai aggiungere il nodo worker al nodo manager Docker Swarm. Puoi farlo con il seguente comando sul nodo worker:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377Dovresti ottenere il seguente output:
This node joined a swarm as a worker.
Sul nodo manager Docker, verifica il nodo worker con il seguente comando:
docker node lsDovresti vedere che il nodo worker è stato aggiunto al Docker Swarm:
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
bipfv8sfm94a9po0uame5rd1n workernode Ready Active 20.10.5
Avvia un servizio in Docker Swarm
Qui, creeremo un nuovo servizio web Nginx e lo scaleremo con due contenitori. Puoi crearlo eseguendo il seguente comando sul nodo manager:
docker service create -p 80:80 --name webservice --replicas 2 nginxDovresti ottenere il seguente output:
agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks
1/2: running [==================================================>]
2/2: running [==================================================>]
verify: Service converged
Puoi ora controllare il servizio web con il seguente comando:
docker service lsDovresti vedere il seguente output:
ID NAME MODE REPLICAS IMAGE PORTS
agyxlaswxakr webservice replicated 2/2 nginx:latest *:80->80/tcp
Puoi anche controllare il contenitore in esecuzione con il seguente comando:
docker psDovresti vedere il seguente output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c887cad1df2e nginx:latest "/docker-entrypoint.…" 32 seconds ago Up 30 seconds 80/tcp webservice.2.jelyj9gmeb7ikl2scg7mz8yg8
Per ottenere informazioni dettagliate sul servizio web, esegui il seguente comando:
docker service ps webserviceDovresti vedere il seguente output:
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
Verifica Docker Swarm
A questo punto, abbiamo distribuito un contenitore Nginx su tutti i nodi del cluster, incluso il nodo di gestione. Puoi ora accedere al tuo server web Nginx utilizzando l’indirizzo IP di qualsiasi nodo worker o manager:

Conclusione
Nella guida sopra, hai imparato come configurare il cluster Docker Swarm su CentOS 8. Ora puoi aggiungere qualsiasi numero di nodi worker al cluster Docker Swarm e scalare la tua applicazione.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.