Docker Swarm einrichten – Anleitung

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker Swarm ist eine leistungsstarke Lösung zur Clusterverwaltung und Orchestrierung, die es Ihnen ermöglicht, Docker-Container im großen Maßstab bereitzustellen und zu verwalten. In diesem Tutorial lernen Sie, wie Sie einen Docker Swarm einrichten, Ihre Swarm-Services verwalten und skalieren und das volle Potenzial der Container-Orchestrierung von Docker nutzen.

Docker Swarm verstehen

Was ist Docker Swarm?

Docker Swarm ist ein natives Clustering- und Orchestrierungswerkzeug für Docker-Container. Es ermöglicht Ihnen, eine Gruppe von Docker-Engines, einen sogenannten Swarm, zu verwalten und Services auf dem Swarm bereitzustellen. In einem Docker Swarm arbeiten die Docker-Engines zusammen als ein einziger virtueller Docker-Host.

Schlüsselkonzepte in Docker Swarm

  1. Nodes: Nodes sind die einzelnen Docker-Engines, die am Swarm teilnehmen. Es gibt zwei Arten von Nodes: Manager und Worker.

    • Manager: Manager sind für die Verwaltung des Swarms verantwortlich, einschließlich der Planung von Aufgaben, der Aufrechterhaltung des gewünschten Zustands des Swarms und der Bereitstellung eines Einstiegspunkts für den Swarm.
    • Worker: Worker sind für die Ausführung der tatsächlichen Container im Swarm verantwortlich.
  2. Services: Services definieren den gewünschten Zustand Ihrer Anwendung. Ein Service kann ein einzelner Container oder eine Gruppe von Containern sein, die zusammenarbeiten.

  3. Tasks: Tasks sind die atomaren Planungseinheiten in einem Swarm. Jeder Service wird in Tasks unterteilt, die dann auf den verfügbaren Nodes geplant werden.

  4. Lastenausgleich: Docker Swarm bietet integrierten Lastenausgleich für Services. Die Manager-Nodes verteilen die Aufgaben automatisch auf die Worker-Nodes, um hohe Verfügbarkeit und Skalierbarkeit sicherzustellen.

Vorteile von Docker Swarm

  1. Native Orchestrierung: Docker Swarm ist ein natives Orchestrierungswerkzeug, d. h. es ist in die Docker-Engine integriert und erfordert keine zusätzliche Software.

  2. Einfachheit: Docker Swarm ist relativ einfach einzurichten und zu verwalten, was es zu einer guten Wahl für kleine bis mittelgroße Deployments macht.

  3. Hohe Verfügbarkeit: Docker Swarm bietet integrierte Funktionen für hohe Verfügbarkeit, wie automatische Aufgabenplanung und Lastenausgleich.

  4. Skalierbarkeit: Docker Swarm kann die Anzahl der Nodes und Container nach Bedarf einfach hoch- oder herunter skalieren.

  5. Sicherheit: Docker Swarm verwendet die gleichen Sicherheitsfunktionen wie die Docker-Engine, einschließlich rollenbasierter Zugriffskontrolle und verschlüsselter Kommunikation.

Nun, da Sie ein grundlegendes Verständnis von Docker Swarm haben, können wir mit dem nächsten Abschnitt fortfahren: Initialisierung eines Docker Swarms.

Initialisierung eines Docker Swarms

Vorbereitung der Nodes

Bevor Sie einen Docker Swarm initialisieren können, benötigen Sie eine Reihe von Docker-Hosts (Nodes). Sie können physische oder virtuelle Maschinen verwenden, solange sie dieselbe Docker-Version ausführen.

Initialisierung des Swarms

Um den Docker Swarm zu initialisieren, müssen Sie einen der Nodes als Manager festlegen. Sie können dies tun, indem Sie den folgenden Befehl auf dem gewünschten Node ausführen:

docker swarm init --advertise-addr <MANAGER-IP>

Ersetzen Sie <MANAGER-IP> durch die IP-Adresse des Manager-Nodes.

Nach Ausführung dieses Befehls erhalten Sie einen Token, den Sie verwenden können, um weitere Nodes als Worker dem Swarm beizufügen. Sie können einen Node als Worker hinzufügen, indem Sie den folgenden Befehl auf dem gewünschten Node ausführen:

docker swarm join --token <TOKEN> <MANAGER-IP>:2377

Ersetzen Sie <TOKEN> durch den Token, den Sie vom Befehl docker swarm init erhalten haben, und <MANAGER-IP> durch die IP-Adresse des Manager-Nodes.

Überprüfung des Swarms

Sie können den Status des Swarms überprüfen, indem Sie den folgenden Befehl auf dem Manager-Node ausführen:

docker node ls

Dies zeigt eine Liste aller Nodes im Swarm mit ihren Rollen (Manager oder Worker) und ihrem Status an.

Absicherung des Swarms

Standardmäßig ist die Kommunikation zwischen den Nodes im Swarm mithilfe des Raft-Protokolls verschlüsselt. Sie können Ihren Swarm jedoch zusätzlich absichern, indem Sie die gegenseitige Transport Layer Security (mTLS)-Authentifizierung aktivieren.

Um mTLS zu aktivieren, müssen Sie die erforderlichen Zertifikate generieren und verteilen. Sie können dies mit dem Befehl docker swarm ca auf dem Manager-Node tun.

docker swarm ca --rotate

Dieser Befehl generiert neue Root- und Zwischenzertifikate und verteilt sie an alle Nodes im Swarm.

Nachdem Sie Ihren Docker Swarm initialisiert haben, können wir mit dem nächsten Abschnitt fortfahren: Verwaltung und Skalierung von Swarm-Services.

Verwaltung und Skalierung von Swarm-Services

Bereitstellung eines Services

Um einen Service im Docker Swarm bereitzustellen, können Sie den Befehl docker service create verwenden. Beispielsweise können Sie einen Nginx-Webserver mit folgendem Befehl bereitstellen:

docker service create --name nginx -p 80:80 nginx:latest

Dies erstellt einen neuen Service namens "nginx" und stellt ihn im Swarm bereit. Der Service exponiert den Port 80 auf dem Host und leitet ihn an den Port 80 im Container weiter.

Skalierung eines Services

Sie können die Anzahl der Replikate (Tasks) für einen Service mit dem Befehl docker service scale skalieren. Um beispielsweise den Service "nginx" auf 5 Replikate zu skalieren, führen Sie aus:

docker service scale nginx=5

Dies erstellt 4 zusätzliche Tasks für den Service "nginx", und der Manager-Node plant sie automatisch auf den verfügbaren Worker-Nodes.

Aktualisierung eines Services

Sie können die Konfiguration eines Services mit dem Befehl docker service update aktualisieren. Um beispielsweise den Service "nginx" auf eine andere Bildversion zu aktualisieren, können Sie Folgendes ausführen:

docker service update --image nginx:1.19 nginx

Dies aktualisiert den Service "nginx" auf die Verwendung des Bildes "nginx:1.19".

Überwachung von Swarm-Services

Sie können den Status Ihrer Swarm-Services mit den Befehlen docker service ls und docker service ps überwachen. Der Befehl docker service ls zeigt eine Liste aller im Swarm laufenden Services an, während der Befehl docker service ps den Status jeder Task innerhalb eines Services anzeigt.

## Alle Services auflisten
docker service ls

## Tasks für einen bestimmten Service auflisten
docker service ps nginx

Abtrennen von Nodes

Wenn Sie Wartungsarbeiten an einem Node durchführen müssen, können Sie ihn "abtrennen". Dadurch plant der Manager alle auf diesem Node laufenden Tasks auf andere verfügbare Nodes neu. Dies können Sie mit dem Befehl docker node update tun:

docker node update --availability drain <NODE-ID>

Ersetzen Sie <NODE-ID> durch die ID des abzukoppelnden Nodes.

Dies deckt die Grundlagen der Verwaltung und Skalierung von Docker Swarm-Services ab. Mit diesem Wissen sollten Sie in der Lage sein, Ihre Anwendungen auf einem Docker Swarm bereitzustellen, zu skalieren und zu warten.

Zusammenfassung

Am Ende dieses Tutorials verfügen Sie über ein fundiertes Verständnis von Docker Swarm und dessen Einrichtung. Sie können Ihre Swarm-Services verwalten und Ihre containerisierten Anwendungen mühelos skalieren. Nutzen Sie die Leistungsfähigkeit von Docker Swarm, um Ihre Containerbereitstellungs- und Verwaltungsverfahren zu optimieren und sicherzustellen, dass Ihre Anwendungen hochverfügbar und skalierbar sind.