So installierst du Docker Swarm auf Ubuntu 22.04

Docker Swarm ist eine Container-Orchestrierung, die auf der Docker Engine aufbaut. Sie ermöglicht es dir, einen Cluster von Docker-Knoten auf mehreren Servern zu erstellen und einzusetzen. Docker Swarm vereinfacht die Bereitstellung deiner containerisierten Anwendung in einem Dienst. Es bietet eine einfache und unkomplizierte Möglichkeit, Container zu verwalten und zu orchestrieren.

Docker Swarm bietet ein hohes Maß an verfügbaren Anwendungen. In Docker Swarm kannst du eine einzelne Anwendung oder einen Dienst auf mehreren Nodes ausführen, die „Worker Nodes“ genannt werden. Außerdem gibt es einen Knoten namens „Swarm Manager“, der die zentrale Verwaltung und Orchestrierung des Docker Swarms übernimmt.

In diesem Tutorial zeigen wir dir Schritt für Schritt, wie du die Docker Swarm Software auf Ubuntu 22.04 Servern installierst.

Voraussetzungen

Um diese Anleitung durchzuführen, musst du über folgende Voraussetzungen verfügen:

  • 3 Ubuntu 22.04 Server – Einer wird als Swarm Master/Manager und zwei Server werden als Worker Nodes verwendet.
  • Einen Nicht-Root-Benutzer mit sudo-Administrator-Rechten.

Einrichten der Systeme

Bevor du Docker installierst und Docker Swarm konfigurierst, musst du deine Systeme vorbereiten, indem du die folgenden Aufgaben erledigst:

  • Öffne Ports für Docker Swarm: Du musst einige Ports, die von Docker Swarm verwendet werden, auf allen deinen Servern öffnen. Das kannst du über die UFW (Uncomplicated Firewall) erreichen.
  • Hinzufügen des Docker-Repositorys: Du wirst das offizielle Docker Repository verwenden, um die Docker Engine auf all deinen Servern zu installieren.

Ports für Docker Swarm öffnen

Im folgenden Abschnitt öffnest du Port 22 für SSH und die Ports 2377, 7946 und 4789 für Docker Swarm über die UFW (Uncomplicated Firewall) auf dem Swarm Master/Manager und den Swarm Nodes. Die UFW ist standardmäßig installiert, aber noch nicht gestartet.

Führe zunächst den unten stehenden ufw-Befehl aus, um das OpenSSH-Anwendungsprofil hinzuzufügen und den standardmäßigen SSH-Port 22 zu öffnen. Starte dann die UFW und aktiviere sie.

sudo ufw allow OpenSSH
sudo ufw enable

Gib y ein, um fortzufahren, und du solltest die Ausgabe Firewall ist aktiv und beim Systemstart aktiviert erhalten.

ufw aktivieren

Führe nun den folgenden Befehl aus, um die Ports zu öffnen, die von den Diensten deines Swarm-Einsatzes verwendet werden sollen. In diesem Fall wirst du den Diensten Ports zwischen 30000 und 35000 zuweisen.

sudo ufw allow 30000:35000/tcp

Als Nächstes führst du den folgenden Befehl aus, um Ports für Docker Swarm zu öffnen.

for ports in 2377/tcp 7946/tcp 7946/udp 4789/udp
do
sudo ufw allow $ports
done

ufw-Einrichtung

Zum Schluss lädst du UFW neu und überprüfst den UFW-Status, indem du den folgenden Befehl ausführst.

sudo ufw reload
sudo ufw status

Du solltest sehen, dass das OpenSSH-Anwendungsprofil und die Ports für Docker Swarm (2377, 7946 und 4789) auf der UFW aktiviert sind.

ufw verifizieren

Hinzufügen des Docker-Repositorys

Nachdem du die UFW konfiguriert hast, musst du das offizielle Docker-Repository zu deinen Servern hinzufügen. Du wirst das offizielle Docker Repository für die Installation der Docker Engine verwenden.

Führe den unten stehenden Befehl aus, um einige grundlegende Pakete auf deinen Ubuntu-Servern zu installieren.

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y

Basisdepots installieren

Als Nächstes führst du den unten stehenden Befehl aus, um den Docker GPG-Schlüssel und das Repository zu deinen Systemen hinzuzufügen.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker-Repo hinzufügen

Zum Schluss aktualisierst du dein Ubuntu-Repository auf jedem Server, indem du den unten stehenden Befehl ausführst.

sudo apt update

Du solltest sehen, dass das Docker-Repository während des Vorgangs abgerufen wird.

Repo aktualisieren

Installation der Docker-Engine

Nachdem du deine Ubuntu-Systeme vorbereitet hast, installierst du die Docker Engine auf diesen Servern.

Installiere die Docker Engine auf deinen Ubuntu-Systemen mit dem unten stehenden Befehl. Gib y ein, um die Installation zu bestätigen.

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker installieren

Sobald die Installation abgeschlossen ist, führe den folgenden systemctl-Befehl aus, um den Docker-Dienst zu überprüfen und sicherzustellen, dass der Dienst läuft.

sudo systemctl is-enabled docker
sudo systemctl status docker

In der folgenden Ausgabe solltest du sehen, dass der Dockerdienst läuft und aktiviert ist.

Docker-Dienst prüfen

(Optional): Erlaube Nicht-Root das Ausführen von Docker Containern

Wenn du Docker Swarm einsetzt und Container mit einem Nicht-Root-Benutzer ausführst, musst du deinen Benutzer zur Docker-Gruppe hinzufügen, damit er den Docker-Befehl ausführen und Container starten kann.

Führe den Befehl usermod aus, um deinen aktuellen Benutzer zur Docker-Gruppe hinzuzufügen.

sudo usermod -aG docker username

Melde dich nun als Nicht-Root-Benutzer an und führe den unten stehenden docker-Befehl aus, um deine Konfiguration zu überprüfen.

su - username
docker run hello-world

Wenn die Konfiguration erfolgreich war, solltest du in der Lage sein, den Container hello-world auszuführen und die folgende Ausgabe zu erhalten:

docker hello-world

Docker Swarm erstellen

Jetzt, wo du die Docker Engine installiert hast, kannst du Docker mit deinen Ubuntu-Servern erstellen und starten. In diesem Beispiel werden wir einen Server als Swarm Master/Manager und zwei Server als Worker Nodes verwenden.

Führe die folgenden Aufgaben aus, um Docker Swarm einzurichten:

  • Initialisierung des Swarm-Modus auf dem Master/Manager.
  • Hinzufügen von Worker Nodes zum Docker Swarm.

Los geht’s.

Initialisierung des Swarm-Modus auf dem Master/Manager

Um Docker Swarm zu initialisieren, führe den folgenden Befehl docker swarm init aus. Der zusätzliche Parameter –advertise-addr bindet den Docker Swarm an eine bestimmte IP-Adresse, und der Parameter –default-addr-pool legt die interne IP-Adresse für die Container fest, die im Swarm laufen.

In diesem Beispiel bindet sich der Docker Swarm an die IP-Adresse 192.168.5.30 und der IP-Adresspool für Container ist 10.20.0.0/16.

docker swarm init --advertise-addr 192.168.5.30 --default-addr-pool 10.20.0.0/16

Wenn der Initialisierungsprozess erfolgreich ist, wird die folgende Ausgabe angezeigt. In der Ausgabe solltest du das generierte Token für das Hinzufügen von Nodes zu Docker Swarm sehen.

Schwarm initialisieren

Als Nächstes führst du den folgenden Befehl aus, um den Status des Swarm-Modus zu überprüfen.

docker info

Wenn der Swarm-Modus aktiviert ist, solltest du die Ausgabe Swarm: active mit Details zur NodeID und dem Status von Manager und Node erhalten.

Schwarmmodus prüfen

Führe abschließend den folgenden Befehl aus, um die Liste der Knoten im Docker Swarm zu überprüfen.

docker node ls

Zu diesem Zeitpunkt ist nur ein Knoten in deinem Docker Swarm verfügbar, nämlich der Swarm Master/Manager.

verfügbare Knotenpunkte prüfen

Hinzufügen von Worker Nodes zu Docker Swarm

Wenn der Docker Swarm initialisiert ist, kannst du deinem Docker Swarm Worker Nodes hinzufügen.

Führe zunächst den unten stehenden Befehl aus, um das generierte Token für den Worker Node anzuzeigen.

docker swarm join-token worker

Du solltest Anweisungen zum Hinzufügen von Worker Nodes sehen, die auch das Token enthalten.

Join-Token prüfen

Gehe nun zu dem Worker Node und füge ihn dem Docker Swarm hinzu, indem du den unten stehenden Befehl docker swarm join ausführst.

docker swarm join --token SWMTKN-1-0i6kbe2oek1iw19jfpvd2j5l0dhfmssz4w505aeihx7ouz8wqc-2dbk7cnmo12uunj53eywwnqr7 192.168.5.30:2377

Wenn der Vorgang erfolgreich war, wird die Ausgabe „Dieser Node ist einem Swarm als Worker beigetreten“ auf deinem Bildschirm erscheinen.

Knoten verbinden Arbeiter1

Knoten verbinden worker2

Gehe dann zurück zum Swarm Master/Manager und führe den unten stehenden Befehl aus, um die Liste der verfügbaren Nodes zu überprüfen.

docker node ls

Wenn alles klappt, sind drei Server im Docker Swarm verfügbar: 1 der Swarm Manager und 2 Worker Nodes mit dem Status Ready and availability is running.

Auflistung von Knotenpunkten

Dienst in Docker Swarm ausführen

Jetzt hast du erfolgreich einen Docker Swarm mit drei Ubuntu-Servern erstellt. Jetzt erfährst du, wie du deine Anwendung in den Docker Swarm deployen kannst, was als Service bezeichnet wird. Ein Service ist ein Abbild deiner Microservice-Anwendung. Das kann ein HTTP-Server, ein Datenbankserver oder eine andere Anwendung sein.

In diesem Beispiel wirst du einen einfachen HTTP-Dienst mit einem Nginx-Image bereitstellen.

Führe den unten stehenden Befehl aus, um einen neuen Dienst in deinem Swarm zu erstellen. In diesem Beispiel erstellst du einen neuen Dienst test-nginx mit 1 Replikat, dem Port 30001 und dem Image nginx:alpine.

docker service create --replicas 1 --name test-nginx -p 30001:80 nginx:alpine

Dienst erstellen

Überprüfe nun die Details des Dienstes test-nginx mit dem unten stehenden Befehl.

docker service inspect test-nginx
docker service inspect --pretty test-nginx

Du solltest detaillierte Informationen über den test-nginx-Dienst wie die folgenden sehen.

Scheckdienst

Als Nächstes überprüfst du die Liste der Docker-Dienste im Docker Swarm mit dem unten stehenden Befehl.

docker service ls
docker service ps test-nginx

Wenn dies erfolgreich war, solltest du sehen, dass der Dienst test-nginx auf dem NODE Manager mit 1 Replikat und dem Port 30001 läuft.

Service Detail prüfen

Greife schließlich mit dem folgenden curl-Befehl über die IP-Adresse des Hosts mit Port 30001 auf den test-nginx-Dienst zu.

curl 192.168.5.30:30001
curl -I 192.168.5.30:30001

Du solltest die index.html Quellcode-Seite und die Details der HTTP-Header sehen.

nginx Dienst prüfen

Dienst in Docker Swarm skalieren

Nachdem du den Docker-Dienst bereitgestellt hast, besteht die nächste Aufgabe darin, den Dienst in Docker Swarm zu skalieren. Dadurch wird die gewünschte Replikation deiner Dienste über die Worker Nodes hinweg erreicht.

Um einen Dienst zu skalieren, führst du den unten stehenden Befehl docker service scale aus. In diesem Fall skalierst du den Dienst test-nginx auf 3 Replikate.

docker service scale test-nginx=3

scale service

Führe nun den folgenden Befehl aus, um den test-nginx-Dienst zu überprüfen. Wenn der Dienst test-nginx skaliert wurde, solltest du zwei weitere Dienste sehen, die von Docker erstellt wurden und auf beiden Worker Nodes laufen.

docker service ps test-nginx

Prüfdienst skaliert

Gehe zum Terminal des Arbeiterknotens und führe den folgenden Befehl aus, um sicherzustellen, dass der Dienst test-nginx läuft.

docker ps
curl 192.168.5.31:30001

Wenn alles gut läuft, solltest du den Container test-nginx.RANDOM-STRING mit dem Status Up auf jedem der Worker Nodes sehen.

Dienst überprüfen Arbeiter1

Dienst überprüfen worker2

Löschen des Dienstes in Docker Swarm

Um deine Umgebung aufzuräumen, löschst du den Dienst test-nginx aus Docker Swarm und entfernst das Docker-Image nginx:alpine.

Lösche den Dienst test-nginx und überprüfe die Liste der verfügbaren Dienste in Docker Swarm mit dem folgenden Befehl.

docker service rm test-nginx
docker service ps

Entferne nun das nginx:alpine-Image und überprüfe die Liste der heruntergeladenen Images für jeden Server mit dem folgenden Befehl.

docker rmi nginx:alpine
docker images

Fazit

Zum Schluss hast du Docker Swarm unter Ubuntu 22.04 Schritt für Schritt erfolgreich installiert. Du hast Docker Swarm mit drei Ubuntu-Servern eingerichtet und gelernt, wie du Anwendungen oder Dienste in Docker Swarm einrichten, skalieren und entfernen kannst.

Das könnte dich auch interessieren …