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

Natives JS zum Erstellen einer Drag-Fotowand

Dieser Artikel zeigt Ihnen eine verschiebbare Fot...

So betten Sie Dateien im Flash-Videoformat (FLV, SWF) in HTML-Dateien ein

Flash-Dateiformate: .FLV und .SWF Für das Flash-Vi...

Ein einfaches Beispiel zum Erstellen einer dünnen Linientabelle in HTML

Wenn Sie wissen möchten, wie Sie diese Tabelle mi...

MySQL verwendet SQL-Anweisungen zum Ändern von Tabellennamen

In MySQL können Sie die SQL-Anweisung „rename tab...

Border-Radius IE8-kompatible Verarbeitungsmethode

Laut canisue (http://caniuse.com/#search=border-r...

Füllen Sie die Suchfunktion auf der HTML-Seite aus

Ich habe kürzlich an einem Framework gearbeitet, ...

Ist ein Design, das den Designspezifikationen entspricht, ein gutes Design?

In den letzten Jahren meiner Karriere habe ich an...

So handhaben Sie Bilder in Vue-Formularen

Frage: Ich habe in Vue ein Formular zum Hochladen...

JavaScript implementiert Countdown auf Front-End-Webseite

Verwenden Sie natives JavaScript, um den Countdow...

Lösung für das Problem, dass HTML2-Canvas-SVG nicht erkannt wird

Es gibt eine neue Funktion, die das Erfassen eine...

Detaillierte Erklärung der MySQL information_schema-Datenbank

1. Übersicht Die Datenbank information_schema ist...

Horizontales Header-Menü mit CSS3 implementiert

Ergebnis:Implementierungscode html <nav class=...

Gogs+Jenkins+Docker automatisierte Bereitstellung von .NetCore-Schritten

Inhaltsverzeichnis Umgebungsbeschreibung Docker-I...