Wie man den Befehl docker service rollback verwendet, um Service-Aktualisierungen rückgängig zu machen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie Service-Updates in einer Docker Swarm-Umgebung effektiv verwalten können. Wir beginnen damit, einen Docker Swarm-Service zu erstellen, der als Grundlage für die Bereitstellung und Skalierung von containerisierten Anwendungen dient.

Nachdem der Service erstellt wurde, führen Sie eine Aktualisierung der Service-Konfiguration durch, um ein typisches Bereitstellungsszenario zu simulieren. Der Kernpunkt dieses Labs besteht darin, zu zeigen, wie Sie den Befehl docker service rollback verwenden können, um den Service auf seine vorherige, stabile Version zurückzusetzen. Abschließend überprüfen Sie die Service-Konfiguration nach dem Rollback, um die erfolgreiche Wiederherstellung zu bestätigen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555230{{"Wie man den Befehl docker service rollback verwendet, um Service-Aktualisierungen rückgängig zu machen"}} docker/ps -.-> lab-555230{{"Wie man den Befehl docker service rollback verwendet, um Service-Aktualisierungen rückgängig zu machen"}} docker/inspect -.-> lab-555230{{"Wie man den Befehl docker service rollback verwendet, um Service-Aktualisierungen rückgängig zu machen"}} docker/create -.-> lab-555230{{"Wie man den Befehl docker service rollback verwendet, um Service-Aktualisierungen rückgängig zu machen"}} docker/pull -.-> lab-555230{{"Wie man den Befehl docker service rollback verwendet, um Service-Aktualisierungen rückgängig zu machen"}} end

Erstellen eines Docker Swarm-Services

In diesem Schritt lernen wir, wie man einen Docker Swarm-Service erstellt. Ein Docker Swarm-Service ist eine Gruppe von Tasks, die auf einem Swarm-Cluster ausgeführt werden. Jeder Task ist eine Instanz eines Containers. Services sind das zentrale Konzept von Docker Swarm und ermöglichen es Ihnen, festzulegen, wie viele Replikate eines Container-Images laufen sollen und wie sie aktualisiert werden sollen.

Bevor wir einen Service erstellen, müssen wir einen Docker Swarm initialisieren. Da wir auf einer einzigen virtuellen Maschine (VM) laufen, werden wir einen Ein-Knoten-Swarm initialisieren.

Zunächst initialisieren wir den Swarm:

docker swarm init --advertise-addr 127.0.0.1

Sie sollten eine Ausgabe sehen, die anzeigt, dass der Swarm initialisiert wurde und dass der aktuelle Knoten jetzt ein Manager ist.

Nun erstellen wir einen Service mit dem nginx-Image. Wir werden den Service my-nginx nennen und angeben, dass wir 3 Replikate des nginx-Containers laufen lassen möchten.

Zuerst laden wir das nginx-Image herunter, um sicherzustellen, dass es lokal verfügbar ist:

docker pull nginx:latest

Jetzt erstellen wir den Service:

docker service create --name my-nginx --replicas 3 nginx:latest

Dieser Befehl erstellt einen neuen Service namens my-nginx mit 3 Replikaten unter Verwendung des nginx:latest-Images. Docker Swarm verteilt diese Replikate automatisch über die Knoten im Swarm (in diesem Fall nur unseren einzigen Knoten).

Um zu überprüfen, dass der Service erstellt wurde und die Replikate laufen, können Sie die Services auflisten:

docker service ls

Sie sollten my-nginx mit 3/3 laufenden Replikaten sehen.

Sie können auch die mit dem Service verbundenen Tasks untersuchen:

docker service ps my-nginx

Dieser Befehl zeigt Ihnen die einzelnen Tasks (Container), die den my-nginx-Service bilden, ihren aktuellen Zustand und den Knoten, auf dem sie laufen. Sie sollten 3 Tasks im Zustand Running sehen.

Aktualisieren des Services auf eine neue Konfiguration

In diesem Schritt werden wir den my-nginx-Service aktualisieren, um eine andere Version des nginx-Images zu verwenden. Dies zeigt, wie man einen Rolling-Update (Rollende Aktualisierung) eines Services in Docker Swarm durchführt.

Zunächst laden wir das nginx:1.21-Image herunter. Dies ist eine bestimmte Version von Nginx, auf die wir unseren Service aktualisieren werden.

docker pull nginx:1.21

Jetzt werden wir den my-nginx-Service aktualisieren, um das nginx:1.21-Image zu verwenden. Wir werden auch die Anzahl der Replikate auf 5 ändern.

docker service update --image nginx:1.21 --replicas 5 my-nginx

Dieser Befehl teilt Docker Swarm mit, den my-nginx-Service zu aktualisieren. Die Option --image nginx:1.21 gibt das neue Image an, das verwendet werden soll, und die Option --replicas 5 ändert die gewünschte Anzahl der Replikate auf 5. Docker Swarm führt einen Rolling-Update durch, ersetzt die alten Container durch neue, die das angegebene Image ausführen, und passt die Anzahl der Replikate an.

Sie können den Fortschritt der Aktualisierung überwachen, indem Sie die Service-Tasks auflisten:

docker service ps my-nginx

Sie werden sehen, dass neue Tasks mit dem nginx:1.21-Image erstellt werden und alte Tasks heruntergefahren werden. Schließlich sollten Sie 5 Tasks im Zustand Running sehen, die alle das nginx:1.21-Image verwenden.

Sie können auch die Service-Details überprüfen, um die Aktualisierung zu bestätigen:

docker service inspect my-nginx --pretty

Suchen Sie in der Ausgabe nach den Feldern Image und Replicas, um zu bestätigen, dass sie auf nginx:1.21 bzw. 5 aktualisiert wurden.

Rückgängig machen der Service-Aktualisierung auf die vorherige Version

In diesem Schritt werden wir den my-nginx-Service auf seine vorherige Konfiguration zurücksetzen. Docker Swarm verfolgt die vorherigen Service-Konfigurationen, sodass Sie einfach zu einem bekannten, funktionierenden Zustand zurückkehren können, wenn eine Aktualisierung Probleme verursacht.

Um den Service zurückzusetzen, verwenden wir den Befehl docker service update mit der Option --rollback.

docker service update --rollback my-nginx

Dieser Befehl weist Docker Swarm an, den my-nginx-Service auf die Konfiguration zurückzusetzen, die er vor der letzten Aktualisierung hatte. In unserem Fall bedeutet dies, dass wir wieder zum nginx:latest-Image und zur ursprünglichen Anzahl der Replikate (die 3 war) zurückkehren.

Sie können den Rücksetzvorgang überwachen, indem Sie die Service-Tasks auflisten:

docker service ps my-nginx

Sie werden sehen, dass Tasks, die das nginx:1.21-Image ausführen, heruntergefahren werden und neue Tasks, die das nginx:latest-Image ausführen, erstellt werden. Die Anzahl der Tasks wird sich auch wieder auf die vorherige Anzahl der Replikate einstellen.

Sobald der Rücksetzvorgang abgeschlossen ist, sollten Sie Tasks sehen, die das nginx:latest-Image ausführen, und die Anzahl der Replikate sollte wieder auf 3 zurückgekehrt sein.

Sie können auch die Service-Details untersuchen, um den Rücksetzvorgang zu bestätigen:

docker service inspect my-nginx --pretty

Suchen Sie in der Ausgabe nach den Feldern Image und Replicas. Sie sollten jetzt die Konfiguration vor der letzten Aktualisierung wiedergeben.

Überprüfen der Service-Konfiguration nach dem Rücksetzen

In diesem Schritt werden wir explizit überprüfen, ob der my-nginx-Service erfolgreich auf seine vorherige Konfiguration zurückgesetzt wurde. Dies umfasst die Überprüfung sowohl des von dem Service verwendeten Images als auch der Anzahl der Replikate.

Zunächst listen wir die Services auf, um den aktuellen Zustand zu sehen:

docker service ls

Sie sollten my-nginx in der Liste sehen, und in der Spalte REPLICAS sollte 3/3 angezeigt werden. Dies zeigt an, dass 3 Replikate gewünscht sind und 3 aktuell laufen.

Als Nächstes untersuchen wir die Service-Details, um das Image und die Anzahl der Replikate zu bestätigen.

docker service inspect my-nginx --pretty

In der Ausgabe suchen Sie nach dem Feld Image. Es sollte jetzt nginx:latest sein. Auch das Feld Replicas sollte 3 sein.

Schließlich betrachten wir die mit dem Service verbundenen Tasks, um zu bestätigen, dass die laufenden Container das richtige Image verwenden.

docker service ps my-nginx

Sie sollten 3 Tasks in der Liste sehen, und in der Spalte IMAGE für jeden Task sollte nginx:latest stehen. Der CURRENT STATE für alle Tasks sollte Running sein.

Durch diese Überprüfungen können wir sicher sein, dass das Rücksetzen erfolgreich war und der Service in seinem gewünschten vorherigen Zustand läuft.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Docker Swarm-Services verwaltet, wobei wir uns speziell auf die Erstellung und Aktualisierung von Services konzentriert haben. Wir haben begonnen, indem wir einen Ein-Knoten-Docker Swarm initialisiert haben und dann einen Service namens my-nginx mit drei Replikaten unter Verwendung des nginx:latest-Images erstellt haben. Wir haben die Erstellung des Services und die laufenden Tasks mit docker service ls und docker service ps überprüft.

Nach der Erstellung des Services haben wir untersucht, wie man die Service-Konfiguration aktualisiert. Dies beinhaltete die Änderung des von dem Service verwendeten Images und demonstrierte ein häufiges Szenario für Service-Aktualisierungen in einer Swarm-Umgebung.