Detaillierte Erläuterung der Konzepte und Verwendung von Docker Swarm

Detaillierte Erläuterung der Konzepte und Verwendung von Docker Swarm

Docker Swarm ist ein von Docker entwickelter Container-Cluster-Verwaltungsdienst. Ab Version 1.12.0 wird es nach der Installation ein Teil von Docker (gebündelte Software), auch als Swarm-Modus bezeichnet, und es ist keine zusätzliche Installation erforderlich.

Im Vergleich zu Kubernetes ist Docker Swarm eine einfache Software, die nicht gerade überzeugend erscheint. Aber die Kompatibilität mit Docker-Compose macht alles wett. Für Anfänger, die keine Erfahrung mit der Verwendung von Clustern haben, ist der Einstieg mit Docker Swarm eine gute Wahl.

Konzept

Docker Swarm umfasst hauptsächlich die folgenden Konzepte:

  • Schwarm
  • Knoten
  • Stapel
  • Service
  • Aufgabe
  • Lastenausgleich

Schwarm selbst bedeutet „Gruppe“, eine Menge oder ein Schwarm. Damit ist der Zustand des Computerclusters nach der Anbindung mittels Docker gemeint. Mit dem Befehl „Docker Swarm“ können Sie einen Cluster erstellen, ihm beitreten und ihn verlassen.

Ein Node ist ein Computerknoten, der auch als Docker-Knoten betrachtet werden kann. Knoten sind in zwei Kategorien unterteilt: Manager und Worker. Ein Schwarm muss mindestens einen Manager haben und einige Verwaltungsbefehle können nur für den Manager verwendet werden. Beide Knotentypen können Dienste ausführen, aber nur der Manager kann Ausführungsbefehle ausführen. Beispielsweise können Sie den Befehl „Docker Node“ verwenden, um Knoten nur im Manager anzuzeigen, zu konfigurieren und zu löschen.

Ein Stack ist eine Gruppe von Diensten, ähnlich wie Docker-Compose. Standardmäßig teilt sich ein Stack ein Netzwerk und ist gegenseitig zugänglich, aber von anderen Stack-Netzwerken isoliert. Dieses Konzept dient lediglich der Vereinfachung der Anordnung. Mit dem Docker-Stack-Befehl können Sie problemlos einen Stack betreiben, anstatt die Dienste einzeln auszuführen.

Service ist eine Art Container. Für Benutzer ist der Service der Kerninhalt der Interaktion mit Swarm. Der Dienst verfügt über zwei Ausführungsmodi: Einer ist repliziert und gibt die Anzahl der Container an, die ein Dienst ausführt. Der andere ist global und führt einen Container dieses Typs auf allen Knoten aus, die die Ausführungsbedingungen erfüllen. Der Docker-Service-Befehl kann den Dienst in Swarm betreiben.

Mit Task wird die Aufgabe des Ausführens eines Containers bezeichnet, der die kleinste Einheit eines Swarm-Ausführungsbefehls darstellt. Um einen Dienst erfolgreich auszuführen, müssen Sie eine oder mehrere Aufgaben ausführen (abhängig von der Anzahl der Container eines Dienstes), um sicherzustellen, dass jeder Container erfolgreich gestartet wird. Normalerweise führen Benutzer eher Dienste als Aufgaben aus.

Zum Lastenausgleich gehört auch der Reverse-Proxy. Swarm verwendet Ingress-Lastausgleich, was bedeutet, dass jeder Zugriff auf einen veröffentlichten Port auf jedem Knoten automatisch an den realen Dienst weitergeleitet werden kann. Das allgemeine Prinzip ist in der folgenden Abbildung dargestellt.

Replikationsmodus

Leistungen: 
 einige-Dienste: 
  ... 
  einsetzen: 
   Modus: repliziert 
   Replikate: 3

Standardmäßig wird der Modus repliziert, daher kann diese Zeile weggelassen werden. Die Standardanzahl der Replikate beträgt 1, was bedeutet, dass dieser Dienst nur einen Container startet. In diesem Modus können Sie bei Bedarf mehrere Dienste starten, und Swarm passt sich automatisch an. Manchmal startet ein Knoten mehrere Container.

Globaler Modus

Leistungen: 
 einige-Dienste: 
  ... 
  einsetzen: 
   Modus: global 
   Platzierung: 
    ...

Stellen Sie einen für alle bereitstellbaren Knoten bereit. Durch die Platzierung können Sie die Knoten begrenzen, die die Bedingungen erfüllen, und die Bereitstellung auf ungeeigneten Knoten vermeiden.

arbeiten

Hier sind einige häufig verwendete spezifische Operationen aufgeführt.

Erstellen des ersten Knotens

Docker Swarm init --advertise-addr $IP

$IP ist die extern zugängliche IP-Adresse des aktuellen Knotens, die für andere Knoten bequem zu adressieren ist.

Auf diese Weise wird ein Swarm initialisiert, der nur über einen Manager-Knoten verfügt.

Hinzufügen eines neuen Knotens zum Schwarm

Führen Sie auf dem Manager-Knoten den folgenden Befehl aus, um zu sehen, wie Sie einem Knoten beitreten:

$ Docker Swarm Join-Token-Manager 
Um diesem Swarm einen Manager hinzuzufügen, führen Sie den folgenden Befehl aus: 
  Docker-Schwarm beitreten --Token SWMTKN-1-2zspelk468gb6wgw5adea4wlbw4kfy3q1uhr86zpafl9m5a3ho-ezs4fylj526e801b3cl0pojr5 10.174.28.52:2377 
$ Docker Swarm Join-Token-Arbeiter 
Um diesem Schwarm einen Arbeiter hinzuzufügen, führen Sie den folgenden Befehl aus: 
  Docker-Schwarm beitreten --Token SWMTKN-1-2zspelk468gb6wgw5adea4wlbw4kfy3q1uhr86zpafl9m5a3ho-164iqklrfv8o3t55g088hylyk 10.174.28.52:2377

Führen Sie auf einer Maschine, die keinem Swarm beigetreten ist, den oben gezeigten Befehl docker swarm join --token ... aus, um ein Manager- oder Worker-Knoten dieses Swarms zu werden.

Festlegen der Knotenbezeichnung

Auf dem Manager-Knoten können Sie Beschriftungen für jeden Knoten festlegen:

Docker-Knoten-Update $node_name --label-add main=true

$node_name dient zum Festlegen der Knoten-ID oder des HOSTNAMEN. Die Bezeichnung hat die Form eines Schlüssel-Wert-Paares. Bei main=true ist main der Schlüssel und true der Wert.

Nachdem Sie das Label festgelegt haben, können Sie die Einschränkungen bei der Platzierung in der Compose-Datei verwenden, um die verfügbaren Knoten einzuschränken.

Leistungen: 
 einige-Dienste: 
  ... 
  einsetzen: 
   Platzierung: 
    Einschränkungen: 
     - node.labels.main == true 
   ...

Die obige Konfiguration ermöglicht die Verwendung von some-service nur auf Knoten, bei denen Label auf main=true gesetzt ist.

Starten und Beenden von Diensten

Docker-Stack-Bereitstellung $stack_name -c docker-compose.yaml -c other.yaml …

$stack_name ist der Stapelname. Sie können -c verwenden, um mehrere Docker-Compose-Dateien anzugeben, oder Sie können mehrere Dateien stapelweise unter demselben Stapel bereitstellen. Das Schreiben dieser YAML-Dateien ist im Wesentlichen dasselbe wie das des ursprünglichen Docker-Compose-Befehls, mit der Ausnahme, dass die folgenden eindeutigen Konfigurationen hinzugefügt werden und einige Konfigurationen, die im Swarm-Szenario nicht unterstützt werden, ignoriert werden.

Es wird empfohlen, zum Orchestrieren des Stacks die Docker-Compose-Datei zu verwenden, anstatt ihn manuell mit „Docker Service Create“ zu erstellen. Detaillierte Informationen zu Konfigurationselementen finden Sie in der Referenz zur Compose-Dateiversion 3 | Docker-Dokumentation.

Um alle Dienste in einem Stapel zu stoppen, führen Sie den folgenden Befehl aus.

Docker-Stapel rm $Stack_Name

Aktualisieren des Images eines laufenden Dienstes

Docker-Dienstaktualisierung --image $image:$tag $service_name

Oben finden Sie eine ausführliche Erläuterung des Konzepts und der Verwendung von Docker Swarm. Weitere Informationen zu Docker Swarm finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So verwenden Sie Docker Swarm zum Erstellen von WordPress
  • Beispielcode zur Implementierung fortlaufender Updates von Diensten mit Docker Swarm
  • Docker Swarm von der Bereitstellung bis zum grundlegenden Betrieb
  • Wie führt Docker Swarm einen bestimmten Container auf einem bestimmten Knoten aus?
  • Detaillierte Erläuterung der Prinzipien der Diensterkennung und des Lastenausgleichs von Docker Swarm
  • Detaillierte Erklärung von Docker-Swarm-Clusterfehlern und Ausnahmen
  • So verwenden Sie Docker Swarm zum Erstellen eines Clusters
  • Docker Swarm – Beispiel für die ersten Schritte
  • Detaillierte Erläuterung zur Verwendung von Docker 1.12 zum Erstellen eines Docker-Schwarmclusters mit mehreren Hosts

<<:  Lösung für das Problem des verstümmelten Codes in MySQL 5.x

>>:  Eine kurze Einführung in die Abfrageeffizienz von MySQL-Speicherfeldtypen

Artikel empfehlen

9 praktische Tipps zum Erstellen von Webinhaltsseiten

Inhalt 1. Geben Sie den Lesern einen Grund zu blei...

So fahren Sie eine MySQL-Instanz sicher herunter

In diesem Artikel wird der Vorgang zum Herunterfa...

Hilfedokument „MySQL-Lernhinweise“

Systemhilfe anzeigen help contents mysql> Hilf...

Methode zur Behebung von IE6-Space-Bugs

Schauen Sie sich den Code an: Code kopieren Der Co...

JS verwendet die Methode „reduce()“, um Baumstrukturdaten zu verarbeiten

Inhaltsverzeichnis Definition Grammatik Beispiele...

So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

Inhaltsverzeichnis 1. Einleitung: 2. Die erste Id...

Methode und Einführung der Tabellenindexdefinition in MySQL

Überblick Ein Index ist eine vom DBMS basierend a...

Prinzipanalyse des UDP-Verbindungsobjekts und Anwendungsbeispiele

Ich habe zuvor zum Einstieg in UDP ein einfaches ...

Probleme bei der Installation von MySQL und mysql.sock unter Linux

Vor kurzem traten bei der Installation von Apache...

Einführung in 10 Hooks in React

Inhaltsverzeichnis Was ist ReactHook? React biete...

Einführungstutorial zu React Hooks

Zustandshaken Beispiele: importiere { useState } ...

JavaScript Canvas zeichnet dynamische Drahtgittereffekte

In diesem Artikel wird der spezifische Code des d...

Detaillierte Erklärung des Docker-Befehls zum Sichern des Linux-Systems

Tar-Backup-System sudo tar cvpzf backup.tgz --exc...