Detaillierte Erläuterung der Docker Swarm-Dienstorchestrierungsbefehle

Detaillierte Erläuterung der Docker Swarm-Dienstorchestrierungsbefehle

1. Einleitung

Docker verfügt über ein Orchestrierungstool namens Docker-Compose, das mehrere Docker-Container, aus denen eine Aufgabe besteht, orchestrieren und verwalten kann. In ähnlicher Weise können Sie in einem Swarm-Cluster Docker Stack verwenden, um eine Gruppe verwandter Dienste zu orchestrieren und zu verwalten.

Der Docker-Stack ist ebenfalls eine YAML-Datei, ähnlich einer Docker-Compose.yml-Datei, und die Anweisungen sind grundsätzlich dieselben. Im Vergleich zu Compose unterstützt es jedoch weder Build, Links noch Netzwerkmodus. Docker Stack verfügt über einen neuen Befehl „Deploy“.

Hinweis: Der Stapel unterstützt keine Anweisungen

2. Bereitstellen

Mit „Deploy“ wird die Konfiguration im Zusammenhang mit der Bereitstellung und Laufzeit von Swarm-Diensten angegeben. Die Konfiguration wird nur wirksam, wenn der Swarm-Cluster mithilfe von Docker Stack Deploy bereitgestellt wird. Diese Option wird bei Verwendung von „docker-compose up“ oder „docker-compose run“ ignoriert. Um die Bereitstellungsoption zu verwenden, muss die Version in der Compose-Datei 3 oder 3+ sein.

Version: '3'
Leistungen:
  Redis:
    Bild: redis:alpine
    einsetzen:
      Replikate: 6
      Konfiguration aktualisieren:
        Parallelität: 2
        Verzögerung: 10s
      Neustartrichtlinie:
        Bedingung: bei Fehler

(1) ENDPOINT_MODE

Geben Sie den Swarm-Service-Erkennungsmodus an

  • endpoint_mode: vip – Docker weist dem Swarm-Cluster-Dienst eine virtuelle IP (VIP) als „Front-End“ zu, über das Clients den Cluster-Dienst erreichen können. Docker leitet Dienstanforderungen zwischen Clients und verfügbaren Worker-Knoten weiter. Der Client muss nicht wissen, wie viele Knoten am Dienst teilnehmen oder welche IP/welcher Port diese Knoten haben. (Dies ist der Standardmodus)
  • Endpunktmodus: DNSRR -

Die DNS-Round-Robin-Diensterkennung (DNSRR) verwendet keine einzelne virtuelle IP. Docker richtet DNS-Einträge für Dienste ein, sodass eine DNS-Abfrage für den Dienstnamen eine Liste von IP-Adressen zurückgibt und Clients eine direkte Verbindung zu einer dieser Adressen herstellen. DNS-Round-Robin ist nützlich, wenn Sie Ihren eigenen Load Balancer verwenden möchten oder wenn Sie eine Mischung aus Windows- und Linux-Anwendungen haben.

Hinweis: Version 3.3+

Version: "3.3"
 
Leistungen:
  Wordpress:
    Bild: WordPress
    Häfen:
      -8080:80
    Netzwerke:
      - Überlagerung
    einsetzen:
      Modus: repliziert
      Replikate: 2
      Endpunktmodus: VIP
 
  MySQL:
    Bild: MySQL
    Bände:
       -db-data:/var/lib/mysql/data
    Netzwerke:
       - Überlagerung
    einsetzen:
      Modus: repliziert
      Replikate: 2
      Endpunktmodus: DNSRR
 
Bände:
  DB-Daten:
 
Netzwerke:
  Überlagerung:

(2) Etiketten

Gibt die Bezeichnung des Dienstes an. Diese Bezeichnungen werden nur für den Dienst festgelegt, nicht für die Container des Dienstes.

Version: "3"
Leistungen:
  Webseite:
    Bild: Web
    einsetzen:
      Beschriftungen:
        com.example.description: „Dieses Label wird im Webservice erscheinen“

Um stattdessen Beschriftungen für den Container festzulegen, verwenden Sie den Schlüssel „Labels“ außerhalb der Bereitstellung.

Version: "3"
Leistungen:
  Webseite:
    Bild: Web
    Beschriftungen:
      com.example.description: „Dieses Label erscheint auf allen Containern für den Webservice“

(3) MODUS

Global (nur ein Container pro Clusterknoten) oder Replikate (geben Sie die Anzahl der Container an). Der Standardwert wird kopiert.

Version: '3'
Leistungen:
  Arbeitnehmer:
    Bild: dockersamples/examplevotingapp_worker
    einsetzen:
      Modus: global

(4) Platzierung

Festlegen von Einschränkungen und Voreinstellungen

Version: '3'
Leistungen:
  db:
    Bild: postgres
    einsetzen:
      Platzierung:
        Einschränkungen:
          - node.role == Manager
          -engine.labels.operatingsystem==ubuntu 14.04
        Einstellungen:
          - Verbreitung: node.labels.zone

(5) REPLIKATE

Wenn sich der Dienst im Replikationsmodus (Standard) befindet, können Sie die Anzahl der Container angeben, die für den Dienst ausgeführt werden sollen.

Version: '3'
Leistungen:
  Arbeitnehmer:
    Bild: dockersamples/examplevotingapp_worker
    Netzwerke:
      -Frontend
      - Backend
    einsetzen:
      Modus: repliziert
      Replikate: 6

(6) RESSOURCEN

Konfiguration des Ressourcenlimits

Version: '3'
Leistungen:
  Redis:
    Bild: redis:alpine
    einsetzen:
      Ressourcen:
        Grenzen:
          CPUs: „0,50“
          Speicher: 50M
        Reservierungen:
          CPUs: „0,25“
          Speicher: 20M

Im folgenden Beispiel ist der Redis-Dienst auf die Nutzung von nicht mehr als 50 MB Speicher und 0,50 (50 %) der verfügbaren Verarbeitungszeit (CPU) beschränkt und verfügt über 20 MB Speicher und 0,25 der CPU-Zeit (immer verfügbar).

(7) RESTART_POLICY

Konfigurieren Sie, ob und wie der Container nach dem Beenden neu gestartet werden soll. Ersetzt den Neustartbefehl.

  • Bedingung: keine, bei Fehler und beliebig (Standard ist beliebig)
  • Verzögerung: Wie lange zwischen Neustartversuchen gewartet werden soll (Standard: 0)
  • max_attempts: Die Anzahl der Neustartversuche (Standard ist ein Neustart bis zum Erfolg)
  • Fenster: Die Wartezeit, bevor bestätigt wird, ob ein Neustart erfolgreich war
Version: "3"
Leistungen:
  Redis:
    Bild: redis:alpine
    einsetzen:
      Neustartrichtlinie:
        Bedingung: bei Fehler
        Verzögerung: 5s
        Max_Versuche: 3
        Fenster: 120s

(8) UPDATE_CONFIG

So aktualisieren Sie den Konfigurationsdienst

  • Parallelität: Die Anzahl der Container, die gleichzeitig aktualisiert werden
  • Verzögerung: Container-Upgrade-Intervall
  • failure_action: Die Aktion nach dem Fehlschlagen des Upgrades (Fortfahren, Zurücksetzen und Anhalten. Die Standardeinstellung ist „Anhalten“).
  • Monitor: Die Zeit, nach der das Update erfolgreich abgeschlossen ist (ns|us|ms|s|m|h).
  • (Standard 0 s) max_failure_ratio: Die zulässige Fehlerrate während des Updates.
  • rder: Die Reihenfolge der Vorgänge während der Aktualisierung. Zuerst stoppen (alte Aufgaben werden gestoppt, bevor neue gestartet werden) oder Zuerst starten (neue Aufgaben werden zuerst gestartet und laufende Aufgaben überlappen sich kurz) (Standard: zuerst stoppen). Hinweis: Wird nur in Version 3.4 und höher unterstützt.
Version: '3.4'
Leistungen:
  Abstimmung:
    Bild: dockersamples/examplevotingapp_vote:before
    hängt ab von:
      - Redis
    einsetzen:
      Replikate: 2
      Konfiguration aktualisieren:
        Parallelität: 2
        Verzögerung: 10s
        Reihenfolge: Stopp zuerst

(9) hängt davon ab

Stellt Abhängigkeiten zwischen Diensten dar

Version: '3'
Leistungen:
  Webseite:
    bauen: .
    hängt ab von:
      -db
      - Redis
  Redis:
    Bild: Redis
  db:
    Bild: postgres

(10) DNS

Benutzerdefinierte DNS-Server. Kann ein einzelner Wert oder eine Liste sein.

DNS: 8.8.8.8
DNS:
  - 8.8.8.8
  - 9.9.9.9

(11) DNS-Suche

dns_search: beispiel.com
DNS-Suche:
  - dc1.example.com
  - dc2.example.com

(12) Umwelt

Umgebungsvariablen hinzufügen. Sie können ein Array oder ein Wörterbuch verwenden. Alle Booleschen Werte (true/false, yes/no) müssen in Anführungszeichen gesetzt werden, um sicherzustellen, dass sie vom YML-Parser nicht in „True“ oder „False“ umgewandelt werden.

Umfeld:
  RACK_ENV: Entwicklung
  ANZEIGEN: 'wahr'
  SESSION_SECRET:
 
Umfeld:
  - RACK_ENV=Entwicklung
  - SHOW=true
  -SESSION_SECRET

(13) aussetzen

Durch das Öffnen von Ports in Containern werden die Ports auf dem Host nicht freigegeben. Sie sind nur für die zugehörigen Dienste zugänglich. Es können nur interne Ports angegeben werden. 

exponieren:
 - "3000"
 - "8000"

Oben finden Sie den detaillierten Inhalt des Docker Swarm-Dienstorchestrierungsbefehls. Weitere Informationen zur Docker Swarm-Dienstorchestrierung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Prinzipien der Diensterkennung und des Lastenausgleichs von Docker Swarm
  • Detaillierte Erklärung von Docker-Swarm-Clusterfehlern und Ausnahmen
  • Detaillierte Erläuterung zur Verwendung von Docker 1.12 zum Erstellen eines Docker-Schwarmclusters mit mehreren Hosts
  • So installieren Sie Docker und verwenden es im Docker Swarm-Modus
  • Detaillierte Erläuterung der Docker Compose-Dienstorchestrierung

<<:  Zusammenfassung des Wissens zu langsamen MySQL-Protokollen

>>:  Erfahrungen bei der Neugestaltung der Homepage von TOM.COM

Artikel empfehlen

Das WeChat-Applet realisiert den Effekt des Siebschüttelns

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

So fahren Sie eine MySQL-Instanz sicher herunter

In diesem Artikel wird der Vorgang zum Herunterfa...

Installationsmethode der dekomprimierten Version von MySQL 5.7.18 unter Win7x64

Weiterführende Literatur: Beheben Sie das Problem...

Komprimierungs- und Optimierungsvorgänge für Docker-Images

Der Grund für die heutige Beliebtheit von Docker ...

Implementierung der React-Sternebewertungskomponente

Voraussetzung ist die Eingabe der Bewertungsdaten...

Binäre Typoperationen in MySQL

Dieser Artikel stellt hauptsächlich die binären O...

Einige Dinge, die Sie über den Varchar-Typ in MySQL wissen sollten

Speicherregeln für varchar In Versionen unter 4.0...

Die Verbindung zwischen JavaScript-Konstruktoren und Prototypen

Inhaltsverzeichnis 1. Konstrukteure und Prototype...