Docker Swarm ist ein leistungsstarkes Werkzeug zur Orchestrierung von Containern, das es Ihnen ermöglicht, einen Cluster von Docker-Knoten auf mehreren Servern zu erstellen und bereitzustellen. Mit Docker Swarm können Sie Container einfach verwalten und orchestrieren, was es zu einem unverzichtbaren Werkzeug für Entwickler und Systemadministratoren macht. In diesem Schritt-für-Schritt-Leitfaden führen wir Sie durch den Prozess der Installation von Docker Swarm auf Ubuntu 22.04 Servern.

Ports für Docker Swarm öffnen

Zunächst müssen Sie einige Ports öffnen, die von Docker Swarm auf allen Ihren Servern verwendet werden. Dies kann mit der Uncomplicated Firewall (UFW) erreicht werden. Befolgen Sie diese Schritte, um die notwendigen Ports zu öffnen:

  1. Fügen Sie das OpenSSH-Anwendungsprofil hinzu und öffnen Sie den Standard-SSH-Port 22, indem Sie den folgenden Befehl ausführen:
sudo ufw allow OpenSSH
  1. Starten und aktivieren Sie UFW, indem Sie den folgenden Befehl ausführen:
sudo ufw enable
  1. Erlauben Sie Ports 30000 bis 35000 für Dienste, indem Sie den folgenden Befehl ausführen:
sudo ufw allow 30000:35000/tcp
  1. Öffnen Sie die Ports 2377, 7946 und 4789 für Docker Swarm, indem Sie die folgenden Befehle ausführen:
sudo ufw allow 2377/tcp
sudo ufw allow 7946/tcp
sudo ufw allow 7946/udp
sudo ufw allow 4789/udp
  1. Schließlich laden Sie UFW neu und überprüfen Sie den Status, indem Sie die folgenden Befehle ausführen:
sudo ufw reload
sudo ufw status

Docker Repository hinzufügen

Als nächstes müssen Sie das offizielle Docker Repository zu Ihren Servern hinzufügen. Dies ermöglicht es Ihnen, Docker Engine mit den offiziellen Docker Paketen zu installieren. Befolgen Sie diese Schritte, um das Docker Repository hinzuzufügen:

  1. Installieren Sie die notwendigen Pakete, indem Sie den folgenden Befehl ausführen:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
  1. Fügen Sie den Docker GPG-Schlüssel und das Repository zu Ihren Systemen hinzu, indem Sie die folgenden Befehle ausführen:
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
  1. Aktualisieren und aktualisieren Sie Ihr Ubuntu Repository, indem Sie den folgenden Befehl ausführen:
sudo apt update
  1. Sie sollten nun das Docker Repository auf Ihren Servern zur Verfügung haben.

Docker Engine installieren

Mit den vorbereiteten Systemen ist es jetzt an der Zeit, Docker Engine auf Ihren Ubuntu Servern zu installieren. So geht’s:

  1. Installieren Sie Docker Engine, indem Sie den folgenden Befehl ausführen:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
  1. Überprüfen Sie, ob der Docker-Dienst läuft, indem Sie den folgenden Befehl ausführen:
sudo systemctl is-enabled docker
sudo systemctl status docker
  1. Sie sollten sehen, dass der Docker-Dienst auf Ihren Servern aktiviert und läuft.
  2. (Optional): Wenn Sie vorhaben, Docker-Container mit einem Nicht-Root-Benutzer auszuführen, müssen Sie Ihren Benutzer zur Docker-Gruppe hinzufügen. Dies ermöglicht es dem Benutzer, den Docker-Befehl auszuführen und Container zu starten. Führen Sie den folgenden Befehl aus, um Ihren Benutzer zur Docker-Gruppe hinzuzufügen:
sudo usermod -aG docker shapehost
  1. Melden Sie sich als Nicht-Root-Benutzer an und überprüfen Sie Ihre Docker-Konfiguration, indem Sie den folgenden Befehl ausführen:
su- shapehost
docker run hello-world
  1. Wenn die Konfiguration erfolgreich ist, sollten Sie die Ausgabe des “hello-world” Containers sehen.

Docker Swarm initialisieren

Nun, da Docker Engine auf Ihren Servern installiert ist, ist es an der Zeit, Docker Swarm zu initialisieren und den Swarm-Manager und die Worker-Nodes einzurichten. Lassen Sie uns beginnen:

  1. Um Docker Swarm zu initialisieren, führen Sie den folgenden Befehl auf dem Swarm Master/Manager Server aus:
docker swarm init --advertise-addr <MASTER_IP> --default-addr-pool <IP_RANGE>

Ersetzen Sie <MASTER_IP> durch die IP-Adresse des Swarm Master/Manager-Servers und <IP_RANGE> durch den IP-Adressbereich für die Container.

  1. Wenn der Initialisierungsprozess erfolgreich ist, sehen Sie das generierte Token zum Hinzufügen von Knoten zu Docker Swarm.
  2. Um den Swarm-Modus-Status zu überprüfen, führen Sie den folgenden Befehl aus:
docker info

Wenn der Swarm-Modus aktiviert ist, sollten Sie die Details der NodeID, des Managers und des Knotens sehen.

  1. Um die Liste der Knoten im Docker Swarm zu überprüfen, führen Sie den folgenden Befehl aus:
docker node ls

An dieser Stelle sollten Sie nur den Swarm Master/Manager-Knoten sehen.

Worker-Nodes zu Docker Swarm hinzufügen

Mit dem initialisierten Docker Swarm ist es nun an der Zeit, Worker Nodes zum Swarm hinzuzufügen. Befolgen Sie diese Schritte:

  1. Führen Sie den folgenden Befehl auf dem Swarm Master/Manager-Server aus, um das generierte Token zum Hinzufügen von Worker-Nodes anzuzeigen:
docker swarm join-token worker

Notieren Sie sich das angezeigte Token.

  1. Wechseln Sie zum Worker Node-Server und führen Sie den folgenden Befehl aus, um dem Docker Swarm als Worker Node beizutreten:
docker swarm join --token<TOKEN><MASTER_IP>:2377

Ersetzen Sie <TOKEN> durch das Token, das Sie im vorherigen Schritt erhalten haben, und <MASTER_IP> durch die IP-Adresse des Swarm Master/Manager-Servers.

  1. Wenn der Prozess erfolgreich ist, sehen Sie die Ausgabe “Dieser Knoten trat einem Swarm als Worker bei”.
  2. Kehren Sie zum Swarm Master/Manager-Server zurück und führen Sie den folgenden Befehl aus, um die Liste der verfügbaren Knoten im Docker Swarm zu überprüfen:
docker node ls

Sie sollten nun den Swarm Manager/Arbeiterknoten und den neu hinzugefügten Arbeiterknoten sehen.

Dienste in Docker Swarm ausführen

Jetzt, wo Ihr Docker Swarm mit den notwendigen Knoten läuft, ist es an der Zeit, Dienste im Swarm bereitzustellen und auszuführen. In diesem Beispiel werden wir einen einfachen HTTP-Dienst mit dem Nginx-Bild bereitstellen. Befolgen Sie diese Schritte:

  1. Erstellen Sie einen neuen Dienst im Docker Swarm, indem Sie den folgenden Befehl auf dem Swarm Master/Manager-Server ausführen:
docker service create --replicas 1 --name test-nginx -p 30001:80 nginx:alpine

Dieser Befehl erstellt einen neuen Dienst namens “test-nginx” mit 1 Replik, öffnet Port 30001 und verwendet das nginx:alpine-Bild.

  1. Überprüfen Sie die Details des “test-nginx” Dienstes, indem Sie den folgenden Befehl ausführen:
docker service inspect test-nginx

Sie sehen detaillierte Informationen über den Dienst.

  1. Überprüfen Sie die Liste der Docker-Dienste im Swarm, indem Sie den folgenden Befehl ausführen:
docker service ls

Wenn erfolgreich, sollten Sie den “test-nginx” Dienst sehen, der auf dem Swarm Manager/Arbeiter-Knoten läuft.

  1. Greifen Sie auf den “test-nginx” Dienst zu, indem Sie die Host-IP-Adresse und den Port 30001 mit dem folgenden Befehl verwenden:
curl <HOST_IP>:30001

Ersetzen Sie <HOST_IP> durch die IP-Adresse des Swarm Manager/Arbeiter-Knotens.

  1. Sie sollten den Quellcode von index.html und die Details der HTTP-Header sehen.

Dienste in Docker Swarm skalieren

Einer der Hauptvorteile von Docker Swarm ist die Fähigkeit, Dienste mühelos zu skalieren. Lassen Sie uns lernen, wie man den “test-nginx” Dienst in Ihrem Docker Swarm skaliert:

  1. Skalieren Sie den “test-nginx” Dienst auf 3 Repliken, indem Sie den folgenden Befehl auf dem Swarm Master/Manager-Server ausführen:
docker service scale test-nginx=3
  1. Überprüfen Sie den “test-nginx” Dienst, indem Sie den folgenden Befehl ausführen:
docker service ps test-nginx

Sie sollten sehen, dass der Dienst auf allen verfügbaren Worker-Knoten läuft.

  1. Wechseln Sie zu einem der Worker Node-Terminals und führen Sie den folgenden Befehl aus, um sicherzustellen, dass der “test-nginx” Dienst läuft:
curl <WORKER_IP>:30001

Ersetzen Sie <WORKER_IP> durch die IP-Adresse des Worker-Knotens.

  1. Wenn alles richtig eingerichtet ist, sollten Sie den Container sehen, der den “test-nginx” Dienst ausführt.

Dienste in Docker Swarm löschen

Um Ihre Umgebung zu bereinigen und die Dienste aus Ihrem Docker Swarm zu entfernen, folgen Sie diesen Schritten:

  1. Löschen Sie den “test-nginx” Dienst, indem Sie den folgenden Befehl auf dem Swarm Master/Manager-Server ausführen:
docker service rm test-nginx
  1. Überprüfen Sie die Liste der verfügbaren Dienste im Docker Swarm, indem Sie den folgenden Befehl ausführen:
docker service ls

Der “test-nginx” Dienst sollte nicht mehr aufgelistet sein.

  1. Entfernen Sie schließlich das nginx:alpine-Bild und überprüfen Sie die Liste der heruntergeladenen Bilder auf jedem Server, indem Sie die folgenden Befehle ausführen:
docker rmi nginx:alpine
docker images

Wenn Sie nach zuverlässigen und skalierbaren Cloud-Hosting-Lösungen suchen, sollten Sie die Linux SSD VPS Services von Shape.host in Betracht ziehen. Shape.host bietet branchenführende Cloud-Hosting-Dienste mit erstklassiger Leistung und Sicherheit. Bringen Sie Ihr Geschäft auf die nächste Stufe mit den leistungsstarken Hosting-Lösungen von Shape.host.