Beispielcode zur Implementierung fortlaufender Updates von Diensten mit Docker Swarm

Beispielcode zur Implementierung fortlaufender Updates von Diensten mit Docker Swarm

1. Was ist Docker Swarm?

Docker Swarm ist ein offiziell von Docker bereitgestelltes Clusterverwaltungstool. Seine Hauptfunktion besteht darin, mehrere Docker-Hosts zu einem Ganzen zu abstrahieren und verschiedene Docker-Ressourcen auf diesen Docker-Hosts über einen einheitlichen Eingang zu verwalten. Swarm ähnelt Kubernetes, ist jedoch leichter und verfügt über weniger Funktionen als Kubernetes.

Docker Swarm ist wie Docker Compose das offizielle Container-Orchestrierungsprojekt von Docker. Der Unterschied besteht darin, dass Docker Compose ein Tool zum Erstellen mehrerer Container auf einem einzelnen Server oder Host ist, während Docker Swarm Container-Clusterdienste auf mehreren Servern oder Hosts erstellen kann. Für die Bereitstellung von Microservices ist Docker Swarm offensichtlich besser geeignet.

Seit Docker 1.12.0 ist Docker Swarm in der Docker-Engine (Docker Swarm) enthalten und es ist ein Tool zur Diensterkennung integriert. Wir müssen Etcd oder Consul nicht mehr wie zuvor für die Diensterkennung konfigurieren.

2. Docker Swarm-Architektur

Tatsächlich handelt es sich bei diesem Diagramm insgesamt um einen sogenannten Cluster, der einem oder mehreren tatsächlichen Servern entsprechen kann. Auf jedem Server ist Docker installiert und die HTTP-basierte Docker-API ist aktiviert. Dieser Cluster verfügt über einen SwarmManager-Manager, der zum Verwalten der Containerressourcen im Cluster verwendet wird. Das Verwaltungsobjekt des Managers befindet sich nicht auf Serverebene, sondern auf Clusterebene. Das heißt, über den Manager können wir dem Cluster nur allgemeine Anweisungen erteilen, aber nicht angeben, was auf einem bestimmten Server zu tun ist (das ist auch die Essenz von Swarm). Was die spezifische Methode zur Implementierung der Verwaltung betrifft, stellt der Manager der Außenwelt eine HTTP-Schnittstelle zur Verfügung, und externe Benutzer verwalten den Cluster über diese HTTP-Schnittstelle. Bei etwas größeren Clustern ist es am besten, einen tatsächlichen Server als dedizierten Manager bereitzustellen. Zu Lernzwecken können Sie den Manager und den verwalteten Server auch auf demselben Server platzieren.

3. Rolling Update des Docker Swarm Service

Docker Swarm ermöglicht reibungslose Service-Upgrades, d. h., die Dienste werden ohne Ausfallzeiten aktualisiert, ohne dass die Clients davon etwas merken. Lassen Sie uns dies anhand eines konkreten Beispiels demonstrieren. Hier werden wir einen nginx-basierten Webanwendungsdienst auf dem Knotenknoten bereitstellen. Wir werden zwei Versionen derselben Anwendung erstellen: Version 1 und Version 2

Erstellen Sie eine Docker-Datei und kompilieren Sie sie mit Docker Build.

VON nginx
RUN echo '<h1>Swarm:Version 1 <h1>' > /usr/share/nginx/html/index.html

Hinweis: Um das Image jedem Knoten im Swarm-Cluster zugänglich zu machen, laden wir das generierte Image in unser eigenes Image-Repository hoch.

Docker-Anmeldung
Docker-Build -t collenzhao/mynginx:v1.
Docker Push Collenzhao/Mynginx:v1

Erstellen Sie einen Swarm-Dienst, d. h. starten Sie den Container über das Image

Docker-Dienst erstellen -p 7788:80 --Replikate 3 --Name myswarmtest collenzhao/mynginx:v1

Zeigen Sie die bereitgestellten Dienste über den Docker-Dienst LS an.

Zeigen Sie die detaillierten Informationen des bereitgestellten Dienstes über den Docker-Dienst ps myswarmtest an

Der Effekt ist in der folgenden Abbildung dargestellt

Aktualisieren Sie das vorherige Dockerfile. Beachten Sie, dass die Versionsnummer lautet: 2

VON nginx
RUN echo '<h1>Swarm:Version 2 <h1>' > /usr/share/nginx/html/index.html

Kompilieren mit Docker Build

Docker-Build -t collenzhao/mynginx:v2.

Hochladen zum Docker Hub mit Docker Push

Docker Push Collenzhao/Mynginx:v2

Aktualisieren Sie den zuvor in Swarm bereitgestellten Dienst. Die Versionsnummer lautet 2.

Docker-Dienstaktualisierung – Bild collenzhao/mynginx:v2 myswarmtest

Die Wirkung ist wie folgt

Damit ist dieser Artikel über Beispielcode zur Implementierung von Rolling Updates von Diensten mit Docker Swarm abgeschlossen. Weitere Informationen zu Rolling Updates von Docker Swarm finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So verwenden Sie Docker Swarm zum Erstellen von WordPress
  • 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
  • Detaillierte Erläuterung der Konzepte und Verwendung von Docker Swarm

<<:  Methoden und Schritte zum Upgrade von MySql5.x auf MySql8.x

>>:  js+css zur Realisierung eines dreistufigen Navigationsmenüs

Artikel empfehlen

Ein Artikel zum Verständnis der Verwendung von Proxys in JavaScript

Inhaltsverzeichnis Was ist ein Agent Grundkenntni...

Analyse der grundlegenden Verwendung von ul und li

Navigation, kleine Datenmenge Tabelle, zentriert &...

Das Front-End muss wissen, wie Bilder verzögert geladen werden (drei Methoden)

Inhaltsverzeichnis 1. Was ist Lazy Loading? 2. Im...

Methoden und Techniken zur Gestaltung einer interessanten Website (Bild)

Haben Sie schon einmal eine Situation erlebt, in d...

So legen Sie den Rahmen einer Webseitentabelle fest

<br />Zuvor haben wir gelernt, wie man Zelll...

Eine kurze Diskussion über die Definition und Vorsichtsmaßnahmen von H-Tags

Den Ergebnissen zufolge gibt es für die Definitio...

Analyse der Informationsarchitektur von Facebook

<br />Original: http://uicom.net/blog/?p=762...

Detaillierte Erläuterung der praktischen Anwendung des HTML-Tabellenlayouts

Wann wird die Tabelle eingesetzt? Tabellen werden...

So verarbeiten Sie lokal dynamisch geladene Bilder in Vue

Finden Sie das Problem Heute bin ich auf ein Prob...

CocosCreator Typescript macht Tetris-Spiel

Inhaltsverzeichnis 1. Einleitung 2. Mehrere wicht...

Fallstudie zu den SQL ROW_NUMBER()- und OVER()-Methoden

Syntaxformat: row_number() über (Partition durch ...