CodeGym /Kurse /Docker SELF /Einführung in Docker Swarm

Einführung in Docker Swarm

Docker SELF
Level 18 , Lektion 0
Verfügbar

6.1 Grundlegende Konzepte Docker Swarm

Docker Swarm ist ein integriertes Container-Orchestrierungssystem, das von Docker bereitgestellt wird. Es ermöglicht das Erstellen, Verwalten und Skalieren eines Clusters von Docker-Hosts, indem diese in einen einzigen logischen Host umgewandelt werden, auf dem Container ausgeführt werden können. Swarm verteilt Aufgaben automatisch zwischen den Nodes und bietet dadurch Benutzerfreundlichkeit und Fehlertoleranz. In dieser Vorlesung schauen wir uns die Schlüsselkomponenten und grundlegenden Befehle zur Verwaltung von Docker Swarm an.

Grundlegende Konzepte Docker Swarm:

  1. Cluster (Swarm): eine Gruppe von Docker-Hosts, die zu einem einzigen logischen Cluster verbunden sind.
  2. Manager (Managers): Nodes, die den Cluster verwalten und Aufgaben auf die Workernodes verteilen.
  3. Workernodes (Workers): Nodes, die Aufgaben ausführen und Container starten.
  4. Dienste (Services): eine logische Darstellung von Anwendungen, beschreibt, welche Aufgaben erledigt werden sollen und wie viele Container-Instanzen gestartet werden.
  5. Aufgaben (Tasks): einzelne Container, die Instanzen von Diensten sind.

Architektur Docker Swarm:

Docker Swarm verwendet eine Architektur, die auf Managern und Workernodes basiert. Manager verwalten den Zustand des Clusters, und Workernodes führen Aufgaben aus.

Manager:

  • Verwalten den Zustand des Clusters und dessen Konfiguration.
  • Verteilen Aufgaben auf die Workernodes.
  • Bieten Fehlertoleranz und hohe Verfügbarkeit (bei mehreren Managern).

Workernodes:

  • Führen Aufgaben aus, die von den Managern zugewiesen wurden.
  • Starten Container entsprechend den Aufgaben.

Grundlegende Befehle Docker Swarm:

  1. docker swarm init: Initialisiert einen neuen Swarm-Cluster.
  2. docker swarm join: Fügt einem bestehenden Cluster einen Node hinzu.
  3. docker node ls: Zeigt die Liste der Nodes im Cluster an.
  4. docker service create: Erstellt einen neuen Service.
  5. docker service ls: Zeigt laufende Dienste an.
  6. docker service scale: Skaliert den Service auf eine bestimmte Anzahl von Instanzen.
  7. docker service rm: Entfernt einen Service aus dem Cluster.

Die Verwendung von Docker Swarm vereinfacht die Verwaltung von Anwendungen in verteilten Systemen und bietet Fehlertoleranz, Skalierbarkeit und Benutzerfreundlichkeit beim Deployment.

6.2 Erstellen eines Docker Swarm-Clusters

Erstellen und Verwalten eines Docker Swarm-Clusters

Schritt 1: Initialisierung des Clusters

Führe auf dem ersten Host (Manager) den folgenden Befehl aus:

Terminal

docker swarm init --advertise-addr <MANAGER_IPl>

Dieser Befehl initialisiert einen neuen Swarm-Cluster, macht den aktuellen Knoten zum Manager und gibt einen Befehl aus, um Worker-Knoten dem Cluster hinzuzufügen.

Schritt 2: Hinzufügen von Worker-Knoten

Führe auf den anderen Hosts den Befehl aus, der von docker swarm init ausgegeben wurde, um sie dem Cluster hinzuzufügen:

Terminal

docker swarm join --token <SWARM_TOKEN> <MANAGER_IP>:2377

Wo:

  • <SWARM_TOKEN>: Token zum Verbinden mit dem Cluster (wird von docker swarm init ausgegeben).
  • <MANAGER_IP>: IP-Adresse des Manager-Knotens.

Schritt 3: Ansehen der Knoten

Um alle Knoten im Cluster anzuzeigen, verwende den folgenden Befehl:

Terminal

docker node ls

Dieser Befehl zeigt eine Liste aller Knoten, inklusive deren Rollen, Status und Verfügbarkeit.

Beispielausgabe des Befehls docker node ls

Terminal

ID                                    HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
qwertyuiop12345    manager-node        Ready               Active             Leader
asdfghjkl67890      worker-node1       Ready               Active
zxcvbnm09876       worker-node2       Ready               Active

Erklärung der Spalten:

  • ID: Eindeutiger Identifikator des Knotens.
  • HOSTNAME: Der Hostname des Knotens.
  • STATUS: Aktueller Status des Knotens (z.B. Ready).
  • AVAILABILITY: Verfügbarkeit des Knotens (z.B. Active).
  • MANAGER STATUS: Zeigt an, ob der Knoten ein Manager ist (z.B. Leader, Reachable) oder ein Worker-Knoten (leer).

Jetzt ist der Docker Swarm-Cluster konfiguriert und du kannst Anwendungen erstellen und skalieren.

6.3 Verwaltung von Docker Swarm

Verwaltung von Services in Docker Swarm

1. Service erstellen

Erstelle einen Service, der mit einer bestimmten Anzahl von Replikaten läuft:

Terminal

docker service create --name my_web --replicas 3 -p 8080:80 nginx

In diesem Beispiel wird ein Service my_web erstellt, der 3 Exemplare von Nginx ausführt. Die Container veröffentlichen Port 80 auf Port 8080 des Hosts.

2. Services anzeigen

Um alle laufenden Services im Cluster anzuzeigen, benutze den Befehl:

Terminal

docker service ls

Beispielausgabe des Befehls docker service ls

Terminal

ID                     NAME         MODE           REPLICAS     IMAGE
ab12345               my_web       replicated     3/3          nginx:latest

3. Skalieren eines Services

Um die Anzahl der Instanzen (Replikate) eines Services zu ändern, benutze den Befehl docker service scale:

Terminal

docker service scale my_web=5

Jetzt hat der Service my_web 5 Exemplare.

4. Aktualisierung eines Services

Um das Image eines Services auf eine neue Version zu aktualisieren, benutze den Befehl docker service update:

Terminal

docker service update --image nginx:latest my_web

Gewährleistung der Hochverfügbarkeit

Docker Swarm unterstützt Hochverfügbarkeit durch:

  1. Verteilung von Aufgaben zwischen den Knoten im Cluster zur automatischen Wiederherstellung von Containern bei Ausfällen.
  2. Unterstützung mehrerer Manager: Es wird empfohlen, eine ungerade Anzahl von Managern (z. B. 3 oder 5) zu haben, um Probleme mit dem Quorum zu vermeiden.
  3. Verwendung von Replikaten: Konfiguriere mehrere Replikate für jeden Service, um die Fehlertoleranz zu erhöhen.

Das Konzept des Quorums

Ein Quorum stellt die Mehrheit der Knoten dar, die einer bestimmten Aktion (z. B. dem Schreiben von Daten oder der Wahl eines Leaders) zustimmen müssen, damit sie als gültig gilt. Zum Beispiel ist in einem Cluster mit 5 Knoten ein Quorum von 3 Knoten erforderlich.

Nützlicher Tipp! Stelle sicher, dass Manager auf verschiedenen physischen oder Cloud-Servern bereitgestellt werden, um das Risiko gleichzeitiger Ausfälle zu minimieren.

6.4 Beispielkonfiguration für Docker Compose mit Docker Swarm

Docker Compose kann zusammen mit Docker Swarm verwendet werden, um die Verwaltung von Multi-Container-Anwendungen zu vereinfachen.

Beispieldatei docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080-8090:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

  db:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: beispiel
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    networks:
      - my_overlay_network

networks:
  my_overlay_network:
    driver: overlay
    

Stack mit Docker Compose in Swarm starten

Um einen Stack in Docker Swarm zu deployen, verwende den Befehl:

Terminal

docker stack deploy -c docker-compose.yml mystack

Stack anzeigen

Zum Anzeigen der bereitgestellten Stacks:

Terminal

docker stack ls

Dienste im Stack anzeigen

Terminal

docker stack services mystack
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION