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:
- 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
- Starten und aktivieren Sie UFW, indem Sie den folgenden Befehl ausführen:
sudo ufw enable
- Erlauben Sie Ports 30000 bis 35000 für Dienste, indem Sie den folgenden Befehl ausführen:
sudo ufw allow 30000:35000/tcp
- Ö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
- 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:
- 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
- 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
- Aktualisieren und aktualisieren Sie Ihr Ubuntu Repository, indem Sie den folgenden Befehl ausführen:
sudo apt update
- 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:
- 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
- Ü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
- Sie sollten sehen, dass der Docker-Dienst auf Ihren Servern aktiviert und läuft.
- (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
- 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
- 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:
- 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.
- Wenn der Initialisierungsprozess erfolgreich ist, sehen Sie das generierte Token zum Hinzufügen von Knoten zu Docker Swarm.
- 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.
- 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:
- 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.
- 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.
- Wenn der Prozess erfolgreich ist, sehen Sie die Ausgabe “Dieser Knoten trat einem Swarm als Worker bei”.
- 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:
- 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.
- Ü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.
- Ü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.
- 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.
- 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:
- 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
- Ü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.
- 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.
- 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:
- 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
- Ü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.
- 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.