Wie man einen Docker-Stack mit Swarm auf einem VPS einsetzt
Jun 11, 2026
/
Faradilla A.
/
7 Min. Lesezeit
Als Containerisierungsplattform bietet Docker viele Funktionen zur Vereinfachung der Containerverwaltung. Eine davon ist Stack, mit dem Sie Dienste gemeinsam in einem Schwarmcluster verwalten und ausführen können.
Um einen Docker-Stack bereitzustellen, müssen Sie Swarm einrichten und eine aus Diensten bestehende Compose-Datei erstellen. Anschließend führen Sie den Stack aus und überwachen seine Leistung.
Diese Anleitung führt Sie durch die Schritte zur Bereitstellung eines Stacks mit Docker Swarm auf virtuellen privaten Servern (VPS). Am Ende werden Sie in der Lage sein, Ihre Anwendungen über mehrere Server hinweg effizient zu verwalten und zu skalieren.
Was ist ein Docker-Stack?
Ein Docker-Stack ist eine Sammlung von Diensten, die zusammen eine Multicontainer-Anwendung bilden. Sie können diese Dienste als eine einzige Einheit definieren, bereitstellen und verwalten, was die Skalierung und Wartung komplexer Anwendungen erleichtert.
Stacks werden in der Regel mit Docker Swarm verwaltet, einem Orchestrierungstool, das Container-Cluster ermöglicht, eine hohe Verfügbarkeit gewährleistet, einen integrierten Lastausgleich bietet und Fehlertoleranz ermöglicht.
Die Architektur eines Docker-Stacks umfasst:
- Dienste – einzelne Container oder Gruppen von Containern, die einen bestimmten Teil Ihrer Anwendung ausführen, wie z. B. Webserver oder Datenbanken.
- Aufgaben – Instanzen eines Dienstes, die auf Knoten innerhalb des Swarm-Clusters laufen.
- Nodes – Manager- und Worker-Server, die Teil des Swarm-Clusters sind. Der Managerknoten übernimmt die Orchestrierung, während die Arbeitsknoten die Container ausführen.
- Netzwerke und Volumes – Docker Swarm bietet interne Netzwerke und persistente Speichervolumes, die eine nahtlose Kommunikation und Datenpersistenz zwischen den Diensten gewährleisten.
Voraussetzungen
Um einen Docker-Stack mit Swarm bereitzustellen, benötigen Sie mindestens eine VPS-Instanz. Wir empfehlen jedoch die Verwendung mehrerer Server, da Docker Swarm für eine optimale Leistung und Skalierbarkeit einen Manager und einen Arbeitsknoten benötigt.
Der Docker-VPS-Service von Hostinger ist eine zuverlässige Wahl für diese Einrichtung. Docker und alle seine Komponenten sind bereits vorinstalliert, so dass eine zeitaufwändige und fehleranfällige manuelle Einrichtung nicht mehr erforderlich ist.
Docker benötigt nicht viele Ressourcen, daher sollte unser KVM 1 -Tarif, der bei €5.49/Monat mit einem einzelnen CPU-Kern, 4 GB RAM und 50 GB NVMe-Festplattenspeicher beginnt, für die meisten Anwendungsfälle ausreichend sein.
Keine Sorge – Sie können problemlos auf einen höheren Tarif aufrüsten, wenn Sie mehr Leistung oder Speicherplatz benötigen.

Wenn Sie bereits einen VPS-Plan von Hostinger besitzen, ist das auch in Ordnung. Installieren Sie Docker einfach über die Ein-Klick-Vorlage oder manuell mit Linux-Befehlen auf Ihren Servern. Überprüfen Sie nach der Installation, ob Docker läuft, indem Sie den Befehl ausführen:
docker --version
Sie können auch überprüfen, ob der Docker-Daemon aktiv ist, indem Sie ihn ausführen:
sudo systemctl status docker
Es ist auch hilfreich, mit den grundlegenden Docker-CLI-Befehlen vertraut zu sein, da sie Ihnen bei der Verwaltung Ihrer Dienste und der Behebung von Problemen während der Bereitstellung helfen werden. Wenn Sie eine Auffrischung dieser Befehle benötigen, lesen Sie unseren Docker-Spickzettel.
Wie man einen Docker-Stack einsetzt
Nun, da alle Voraussetzungen gegeben sind, ist es an der Zeit, einen Docker-Stack mit Swarm auf Ihrem VPS bereitzustellen.
1. Docker Swarm einrichten
Richten Sie zunächst Docker Swarm ein, um einen Cluster von Docker-Knoten zu verwalten und Container auf mehreren Servern bereitzustellen.
Führen Sie auf Ihrem ersten Server, der als Managerknoten fungieren wird, den folgenden Befehl aus, um einen neuen Schwarm zu erstellen:
Docker-Schwarm-Init
Der Befehl initialisiert Docker Swarm und legt diesen Server als Manager fest.
Sie erhalten eine Ausgabe mit dem Befehl docker swarm join wie diese:

Kopieren Sie den Befehl und führen Sie ihn auf jedem Arbeitsknoten aus, den Sie dem Schwarm hinzufügen möchten.
Bei Erfolg erhalten Sie die Meldung “Dieser Knoten ist einem Schwarm als Arbeiter beigetreten“.

Sobald die Arbeitsknoten beigetreten sind, kehren Sie zum Managerknoten zurück und überprüfen Sie, ob sie sich erfolgreich mit dem Schwarm verbunden haben:
Docker-Knoten ls

Anders als bei der Verwendung von Swarm allein, bei der Sie die Dienste einzeln bereitstellen müssen, definieren Sie hier mehrere Dienste in einer Docker Compose-Datei – ein Thema, das wir im nächsten Schritt behandeln.
2. Erstellen Sie eine Docker Compose-Datei
Mit Docker Compose können Sie mehrere Dienste in einer einzigen Datei docker-compose.yml definieren, die dann gemeinsam bereitgestellt werden können.
Erstellen Sie auf dem Managerknoten mit dem Texteditor nano eine Docker Compose-Datei:
sudo nano docker-compose.yml
Fügen Sie in die Datei den folgenden Inhalt ein, um drei Dienste bereitzustellen: einen Web-dienst, eine Datenbank und einen Reverse-Proxy:
Version: "3.8" Dienstleistungen: Web: Bild: nginx:latest einsetzen: Replikate: 3 restart_policy: Bedingung: Ein-Ausfall Häfen: - "80:80" db: Bild: postgres:latest Umwelt: POSTGRES_PASSWORT: Beispiel einsetzen: Replikate: 1 Vollmacht: Bild: jwilder/nginx-proxy Umwelt: DEFAULT_HOST: manager.vps # oder Ihr tatsächlicher Domainname einsetzen: Repliken: 2

Hier finden Sie eine Erläuterung der einzelnen Dienste:
- web – ein NGINX-Dienst, der auf drei Replikate skaliert wird.
- db – ein PostgreSQL-Datenbankdienst mit einer Replik.
- proxy – ein Reverse-Proxy mit jwilder/nginx-proxy, der mit zwei Replikaten läuft.
Speichern Sie anschließend die Datei und beenden Sie nano mit Strg + X → Y → Enter.
3. Einsatz des Stacks
Nachdem Sie Ihre Dienste in der Docker Compose-Datei definiert haben, stellen Sie den neuen Stack mit dem folgenden Befehl bereit. Ersetzen Sie my_stack durch Ihren bevorzugten Stack-Namen:
docker stack deploy -c docker-compose.yml my_stack

Sie können den Status aller bereitgestellten Dienste mit überprüfen:
Docker-Stack-Dienste my_stack
Dadurch werden alle Dienste im Stack, die Anzahl der Replikate und der aktuelle Status angezeigt, d. h. ob sie laufen oder Probleme haben.

Um weitere Details über jeden Dienst und seine Aufgaben zu erhalten, führen Sie aus:
docker service ps my_stack_web
docker service ps my_stack_db
docker service ps my_stack_proxy
Hier ist eine Beispielausgabe bei der Ausführung des Befehls für den Web-dienst:

4. Testen Sie den Einsatz
Sie können nun testen, ob Ihre Dienste korrekt laufen. Das Prüfverfahren ist je nach Dienst unterschiedlich.
Da einer der Dienste, die Sie in diesem Tutorial bereitgestellt haben, der NGINX-Webdienst ist, testen Sie ihn, indem Sie einen Browser öffnen und auf die IP-Adresse des Managerknotens zugreifen. Zum Beispiel:
http://22.222.222.84
Hostinger VPS-Kunden finden die IP-Adresse ihres Servers, indem sie zu hPanel → VPS → Verwalten → Übersicht → VPS-Details navigieren:

Sie sollten die standardmäßige NGINX-Begrüßungsseite sehen, die bestätigt, dass der Webdienst ausgeführt wird:

5. Skalierung der Dienste
Mit der Skalierung von Docker-Diensten können Sie die Ressourcenzuweisung verwalten und die Arbeitslasten gleichmäßig auf mehrere Knoten verteilen, indem Sie die Anzahl der Replikate in Ihrem Swarm-Cluster erhöhen oder verringern.
Um beispielsweise den Web-dienst von drei auf fünf Replikate zu skalieren, führen Sie aus:
docker service scale my_stack_web=5

Überprüfen Sie anschließend, ob die Skalierung funktioniert hat, indem Sie den Befehl ausführen:
docker service ps my_stack_web

6. Aktualisieren und Zurücksetzen des Stapels
Sie können Ihren bestehenden Stack jederzeit aktualisieren, sei es durch Hinzufügen neuer Dienste, Aktualisieren bestehender Dienste, Entfernen nicht verwendeter Komponenten oder Ändern der Konfiguration.
Wir aktualisieren den Stapel um:
- Hinzufügen von zwei neuen Diensten: wordpress mit drei Replikaten und mysql mit einem Replikat. WordPress benötigt in der Regel MySQL für die Datenbankspeicherung.
- Entfernen des PostgreSQL db -Dienstes, da wir nicht zwei verschiedene Datenbanken einsetzen wollen.
- Aktualisierung des Proxy -Dienstes mit einem aktuellen Domänennamen.
Dazu müssen Sie zunächst Ihre Datei docker-compose.yml bearbeiten:
sudo nano docker-compose.yml
Löschen Sie in der Datei alle vorhandenen Inhalte und ersetzen Sie sie durch die untenstehende aktualisierte Version:
Version: "3.8" Dienstleistungen: Web: Bild: nginx:latest einsetzen: Replikate: 5 restart_policy: Bedingung: Ein-Ausfall Häfen: - "80:80" Vollmacht: Bild: jwilder/nginx-proxy Umwelt: DEFAULT_HOST: www.example.com einsetzen: Repliken: 2 wordpress: bild: wordpress:latest Umwelt: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: exampledb WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORT: Beispiel Häfen: - "8080:80" einsetzen: Replikate: 3 mysql: Bild: mysql:5.7 Umwelt: MYSQL_ROOT_PASSWORT: Beispiel MYSQL_DATENBANK: exampledb einsetzen: Replikate: 1

Vergessen Sie nicht, die Umgebungsvariablen für WordPress und Mysql mit Ihren Anmeldedaten zu aktualisieren. Speichern Sie anschließend Ihre Änderungen und beenden Sie nano.
Als Nächstes stellen Sie den aktualisierten Stack erneut bereit:
docker stack deploy -c docker-compose.yml my_stack
Überprüfen Sie, ob die neuen Dienste mit ausgeführt werden:
Docker-Stack-Dienste my_stack
Sie werden feststellen, dass die neuen Dienste wordpress und mysql hinzugefügt wurden, der gelöschte Dienst db aber noch vorhanden ist. Das liegt daran, dass das Entfernen eines Dienstes aus der Docker Compose-Datei ihn nicht automatisch aus dem Schwarm entfernt.

Um den alten Dienst manuell aus Ihrem Schwarm zu löschen, führen Sie aus:
docker service rm my_stack_db
Bestätigen Sie die Entfernung, indem Sie denselben Befehl docker stack services my_stack erneut ausführen.
Wenn nach der Aktualisierung etwas schief geht, stellen Sie den Stack zurück, indem Sie die vorherige Version Ihrer Docker Compose-Datei erneut bereitstellen:
docker stack deploy -c docker-compose.yml --with-registry-auth my_stack

7. Stack-Leistung überwachen
Die Überwachung der Leistung des Docker-Stacks stellt sicher, dass Ihre Dienste reibungslos funktionieren, und hilft Ihnen bei der sofortigen Behebung von Problemen.
Sehen Sie sich zunächst die Dienstprotokolle an, um zu verstehen, wie sich die Dienste verhalten. Um zum Beispiel Protokolle für my_stack_web zu sehen, verwenden Sie:
docker service logs my_stack_web

Um die Tail-Protokolle für einen bestimmten Dienst kontinuierlich zu verfolgen, fügen Sie dem Befehl die Option -f hinzu:
docker service logs -f my_stack_web
Wenn Sie einen umfassenderen Überblick über die Ressourcennutzung wünschen, verwenden Sie den Echtzeit-Ressourcenverbrauchsmonitor. Es zeigt die CPU- Speicher- Netzwerk- und Festplattennutzung für alle Container an:
Docker-Statistiken

Wenn Sie nur einen bestimmten Container überwachen wollen, fügen Sie dessen Namen wie folgt an:
docker stats [container_name]
8. Entfernen Sie den Stapel
Und schließlich können Sie Ihre Einrichtung aufräumen, wenn Sie mit dem Üben fertig sind und den Stapel nicht mehr benötigen.
Führen Sie den folgenden Befehl aus, um den gesamten Stapel sicher zu entfernen:
docker stack rm my_stack
Dadurch werden alle Dienste im Stapel angehalten und entfernt.

Sie können bestätigen, dass der Stapel entfernt wurde, indem Sie die Dienste erneut überprüfen:
Docker-Stack-Dienste my_stack
Wenn das Entfernen erfolgreich war, sollte der Befehl nichts zurückgeben.

Sie können Ihren Schwarm auch löschen, indem Sie die Knoten veranlassen, ihn zu verlassen:
docker swarm leave # auf Arbeiterknoten
docker swarm leave --force # auf Manager-Knoten
Schlussfolgerung
Der Docker-Stack vereinfacht die Bereitstellung und Verwaltung von Anwendungen mit mehreren Containern, indem er Dienste gruppiert und so deren Skalierung und Überwachung erleichtert.
In diesem Tutorial haben wir Ihnen gezeigt, wie Sie einen Docker-Stack mit Swarm auf mehreren Servern bereitstellen können:
- Initialisieren Sie Docker Swarm und verbinden Sie die Arbeitsknoten.
- Erstellen Sie eine Docker Compose-Datei, um Ihre Dienste zu definieren.
- Stellen Sie den Stack in Swarm bereit.
- Testen Sie den Einsatz des Stacks.
- Skalieren Sie die Dienstreplikate nach Bedarf.
- Aktualisieren Sie den Stack, indem Sie Dienste hinzufügen oder entfernen.
- Überwachen Sie die Stack-Leistung.
- Räumen Sie den Stapel auf, wenn Sie fertig sind.
Wenn Sie mit dem Docker-Stack vertrauter werden, können Sie Dienste wie Redis zur Verbesserung des Caching oder RabbitMQ zur Verbesserung der asynchronen Verarbeitung innerhalb Ihres Stacks hinzufügen.
Sie können auch andere Überwachungstools wie Prometheus und Grafana ausprobieren, die eine leistungsfähigere Metriksammlung und umfassendere Einblicke bieten als die integrierte Überwachung von Docker.
Wie man einen Docker-Stack einsetzt FAQ
Wie erstelle ich einen Docker-Stack?
Um einen Docker-Stack zu erstellen, initialisieren Sie zunächst den Swarm-Modus auf Ihren Nodes mit dem Befehl docker swarm init. Definieren Sie dann Ihre Dienste in einer Datei docker-compose.yml. Zum Schluss stellen Sie den Stack mit docker stack deploy -c docker-compose.yml [stack_name] bereit.
Welche Dateien werden für die Bereitstellung eines Docker-Stacks benötigt?
Sie benötigen nur eine Datei docker-compose.yml, die die Dienste, Netzwerke und Volumes Ihres Stacks definiert. Diese Datei spezifiziert die Konfiguration und Skalierung der Dienste, wenn sie in Docker Swarm bereitgestellt werden.
Wie verwende ich Docker Compose für Stacks?
Verwenden Sie Docker Compose, um mehrere Dienste in einer Datei zu definieren. Nachdem Sie die Dienste definiert haben, stellen Sie sie mit dem Befehl docker stack deploy in Swarm bereit. Um Änderungen vorzunehmen, bearbeiten Sie einfach Ihre Compose-Datei und stellen den Stack erneut bereit.
Alle Tutorial-Inhalte auf dieser Website unterliegen Hostingers strengen redaktionellen Standards und Normen.