Docker Swarm · 5 min read · Nov 10, 2025
Wie man einen Docker Swarm-Cluster auf CentOS 8 installiert und konfiguriert

Docker ist ein Open-Source-Tool, das verwendet werden kann, um Anwendungen mit Containern zu erstellen, bereitzustellen und auszuführen. Der Container ermöglicht es Ihnen, eine Anwendung mit allen erforderlichen Abhängigkeiten zu verpacken und als ein einzelnes Paket zu versenden.
Docker Swarm ist ein Clustering-Tool, das zur Verwaltung des Docker-Hosts verwendet wird. Es ermöglicht Ihnen, eine Gruppe von Docker-Hosts in einen einzigen logischen virtuellen Server zu verwandeln. Auf diese Weise können Sie Ihre Anwendung horizontal skalieren und die Anzahl der Containerinstanzen erhöhen. Docker Swarm bietet sehr nützliche Funktionen, einschließlich Selbstheilung von Containern, Lastenausgleich, Hoch- und Herunterskalierung von Containern, Dienstentdeckung und rollierende Updates.
In diesem Beitrag zeigen wir Ihnen, wie Sie einen Docker Swarm-Cluster auf CentOS 8 einrichten.
Voraussetzungen
- Zwei Server, die CentOS 8 ausführen.
- Ein Root-Passwort ist auf jedem Server konfiguriert.
Docker auf beiden Knoten installieren
Zuerst müssen Sie Docker auf beiden Knoten installieren. Standardmäßig ist die neueste Version von Docker nicht im Standard-Repository von CentOS 8 enthalten. Daher müssen Sie ein Docker-Repository in Ihr System hinzufügen.
Sie können es mit dem folgenden Befehl hinzufügen:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repoSobald das Docker-Repository erstellt ist, installieren Sie Docker mit dem folgenden Befehl:
dnf install docker-ce --nobestNachdem Sie Docker installiert haben, starten Sie den Docker-Dienst und aktivieren Sie ihn, damit er beim Systemneustart gestartet wird, mit dem folgenden Befehl:
systemctl start docker
systemctl enable dockerSie können auch den Status von Docker mit dem folgenden Befehl überprüfen:
systemctl status dockerSie sollten die folgende Ausgabe erhalten:
? 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"
Jetzt überprüfen Sie die installierte Version von Docker mit dem folgenden Befehl:
docker --versionSie sollten die folgende Ausgabe sehen:
Docker version 20.10.5, build 55c4c88
Firewall konfigurieren
Als nächstes müssen Sie die Ports 2376, 2377, 7946 und 80 durch die Firewall auf beiden Knoten zulassen. Sie können sie mit dem folgenden Befehl zulassen:
firebase-cmd --permanent --add-port=2376/tcp
firebase-cmd --permanent --add-port=2377/tcp
firebase-cmd --permanent --add-port=7946/tcp
firebase-cmd --permanent --add-port=80/tcp
firebase-cmd --permanent --add-port=7946/udp
firebase-cmd --permanent --add-port=4789/udpLaden Sie als nächstes die Firewalld neu, um die Änderungen anzuwenden:
firebase-cmd --reloadDocker Swarm-Cluster initialisieren
Als nächstes müssen Sie das Docker Swarm-Cluster auf dem Manager-Knoten initialisieren. Sie können dies mit dem folgenden Befehl tun:
docker swarm init --advertise-addr 45.58.32.185Sie sollten die folgende Ausgabe erhalten:
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.
Sie können den im obigen Output angezeigten Befehl im Docker-Worker-Knoten verwenden, um den Knoten dem Cluster hinzuzufügen.
Sie können die Informationen des Docker Swarm-Clusters mit dem folgenden Befehl überprüfen:
docker infoSie sollten die folgende Ausgabe erhalten:
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
Sie können jetzt den Docker Swarm-Knoten mit dem folgenden Befehl überprüfen:
docker node lsSie sollten die folgende Ausgabe erhalten:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
Worker-Knoten zum Docker Swarm-Cluster hinzufügen
Als nächstes müssen Sie den Worker-Knoten zum Docker Swarm-Manager-Knoten hinzufügen. Sie können dies mit dem folgenden Befehl auf dem Worker-Knoten tun:
docker swarm join --token SWMTKN-1-24ciicg1knfh8htmvymnfw1igx64tcq6ah91n6amk18m2ek9qo-8sf9oysu08t5mf4ggd4ut7o3e 45.58.32.185:2377Sie sollten die folgende Ausgabe erhalten:
This node joined a swarm as a worker.
Überprüfen Sie auf dem Docker-Manager-Knoten den Worker-Knoten mit dem folgenden Befehl:
docker node lsSie sollten sehen, dass der Worker-Knoten dem Docker Swarm hinzugefügt wurde:
cq8xpscsls2ctqhdha8lhdrph * masternode Ready Active Leader 20.10.5
bipfv8sfm94a9po0uame5rd1n workernode Ready Active 20.10.5
Einen Dienst im Docker Swarm starten
Hier werden wir einen neuen Nginx-Webdienst erstellen und ihn mit zwei Containern skalieren. Sie können ihn erstellen, indem Sie den folgenden Befehl auf dem Manager-Knoten ausführen:
docker service create -p 80:80 --name webservice --replicas 2 nginxSie sollten die folgende Ausgabe erhalten:
agyxlaswxakrbboakkyydsh0k
overall progress: 2 out of 2 tasks
1/2: running [==================================================>]
2/2: running [==================================================>]
verify: Service converged
Sie können jetzt den Webdienst mit dem folgenden Befehl überprüfen:
docker service lsSie sollten die folgende Ausgabe sehen:
ID NAME MODE REPLICAS IMAGE PORTS
agyxlaswxakr webservice replicated 2/2 nginx:latest *:80->80/tcp
Sie können auch den laufenden Container mit dem folgenden Befehl überprüfen:
docker psSie sollten die folgende Ausgabe sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c887cad1df2e nginx:latest "/docker-entrypoint.…" 32 seconds ago Up 30 seconds 80/tcp webservice.2.jelyj9gmeb7ikl2scg7mz8yg8
Um die Detailinformationen des Webdienstes zu erhalten, führen Sie den folgenden Befehl aus:
docker service ps webserviceSie sollten die folgende Ausgabe sehen:
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
Docker Swarm überprüfen
An diesem Punkt haben wir einen Nginx-Container über die Clusterknoten, einschließlich des Managementknotens, bereitgestellt. Sie können jetzt auf Ihren Nginx-Webserver über jede IP-Adresse des Worker-Knotens oder des Manager-Knotens zugreifen:

Fazit
In der obigen Anleitung haben Sie gelernt, wie Sie den Docker Swarm-Cluster auf CentOS 8 einrichten. Sie können jetzt beliebig viele Worker-Knoten zum Docker Swarm-Cluster hinzufügen und Ihre Anwendung skalieren.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.