Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen

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 den Befehl docker stack rm effektiv nutzen können, um auf einer Docker Swarm-Umgebung bereitgestellte Docker Stacks zu entfernen. Sie beginnen damit, einen Ein-Knoten-Docker Swarm vorzubereiten, ihn zu initialisieren und seinen Status zu überprüfen.

Nachdem die Umgebung eingerichtet ist, stellen Sie einen Beispiel-Stack mithilfe einer Docker Compose-Datei bereit, um den Bereitstellungsprozess zu verstehen. Der Kern des Labs liegt auf dem Entfernen von Stacks: Sie üben zunächst das Entfernen eines einzelnen bereitgestellten Stacks und stellen dann mehrere Stacks bereit, um zu lernen, wie Sie mehrere Stacks gleichzeitig mit dem Befehl docker stack rm entfernen können. Diese praktische Erfahrung wird Sie mit den Fähigkeiten ausstatten, um Ihre Docker Swarm-Bereitstellungen zu verwalten und aufzuräumen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/ls -.-> lab-555237{{"Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen"}} docker/ps -.-> lab-555237{{"Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen"}} docker/rm -.-> lab-555237{{"Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen"}} docker/pull -.-> lab-555237{{"Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen"}} docker/info -.-> lab-555237{{"Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen"}} docker/version -.-> lab-555237{{"Wie man den docker stack rm-Befehl verwendet, um Stacks zu entfernen"}} end

Vorbereitung einer Docker Swarm-Umgebung

In diesem Schritt bereiten Sie Ihre Umgebung für die Bereitstellung von Docker Stacks vor, indem Sie einen Docker Swarm initialisieren. Docker Swarm ist eine native Cluster- und Orchestrierungslösung für Docker. Es ermöglicht Ihnen, einen Schwarm von Docker-Knoten zu erstellen und zu verwalten.

Zunächst überprüfen wir, ob Docker läuft und zugänglich ist. Sie können dies tun, indem Sie einen einfachen Docker-Befehl ausführen.

docker version

Sie sollten eine Ausgabe sehen, die die Versionen des Docker-Clients und -Servers anzeigt. Dies bestätigt, dass Docker installiert und läuft.

Als nächstes müssen wir den Docker Swarm initialisieren. Da dies eine Ein-Knoten-Umgebung ist, werden wir den Schwarm auf dem aktuellen Computer initialisieren.

docker swarm init

Dieser Befehl initialisiert den Schwarm und macht den aktuellen Knoten zu einem Manager-Knoten. Die Ausgabe enthält Informationen darüber, wie andere Knoten dem Schwarm beitreten können, aber in diesem Lab verwenden wir nur einen einzigen Knoten.

Um zu bestätigen, dass der Schwarm erfolgreich initialisiert wurde, können Sie den Status des Schwarms überprüfen.

docker info | grep Swarm

Die Ausgabe sollte Swarm: active anzeigen, was bedeutet, dass der Schwarm auf diesem Knoten aktiv ist.

Schließlich überprüfen wir, ob der aktuelle Knoten Teil des Schwarms ist und ein Manager ist.

docker node ls

Sie sollten eine Liste der Knoten im Schwarm sehen, wobei der aktuelle Knoten aufgeführt ist und sein Status Ready und Leader lautet.

Bereitstellung eines Beispiel-Stacks

In diesem Schritt lernen Sie, wie Sie eine Beispielanwendung als Stack auf Ihrem Docker Swarm bereitstellen. Ein Stack ist eine Gruppe verwandter Dienste, die Abhängigkeiten teilen und zusammen verwaltet werden können. Wir verwenden ein einfaches Beispiel mit einem Nginx-Webserver.

Bevor wir den Stack bereitstellen, müssen wir eine Docker Compose-Datei erstellen, die die Dienste in unserem Stack definiert. Docker Compose ist ein Tool zum Definieren und Ausführen von mehrcontainerbasierten Docker-Anwendungen. Obwohl Docker Compose nicht vorinstalliert ist, kann der Befehl docker stack deploy Compose-Dateien lesen.

Zunächst erstellen wir ein Verzeichnis für unsere Stack-Definition. Navigieren Sie in Ihr Home-Verzeichnis und erstellen Sie ein neues Verzeichnis namens my-nginx-stack.

cd ~/project
mkdir my-nginx-stack
cd my-nginx-stack

Nun erstellen Sie mithilfe des Editors nano eine Datei namens docker-compose.yml im Verzeichnis my-nginx-stack.

nano docker-compose.yml

Fügen Sie den folgenden Inhalt in die Datei docker-compose.yml ein:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

Diese docker-compose.yml-Datei definiert einen einzelnen Dienst namens web, der das Image nginx:latest verwendet. Sie ordnet Port 80 auf dem Host Port 80 im Container zu und gibt an, dass es eine Replik dieses Dienstes geben soll. Die restart_policy stellt sicher, dass der Dienst neu gestartet wird, wenn er fehlschlägt.

Speichern Sie die Datei, indem Sie Strg + X, dann Y und Enter drücken.

Bevor wir den Stack bereitstellen, laden wir das Image nginx:latest herunter, um sicherzustellen, dass es lokal verfügbar ist.

docker pull nginx:latest

Nun stellen wir den Stack mithilfe des Befehls docker stack deploy bereit. Wir nennen unseren Stack nginx_stack.

docker stack deploy -c docker-compose.yml nginx_stack

Dieser Befehl liest die docker-compose.yml-Datei und erstellt die darin definierten Dienste als Teil des nginx_stack.

Um zu überprüfen, ob der Stack bereitgestellt wurde und der Dienst läuft, können Sie die Dienste im Stack auflisten.

docker stack services nginx_stack

Sie sollten eine Ausgabe sehen, die den Dienst nginx_stack_web mit 1/1 laufenden Repliken anzeigt.

Sie können auch die laufenden Container überprüfen, um den Nginx-Container zu sehen.

docker ps

Sie sollten einen Container sehen, der das Image nginx:latest ausführt und mit dem Dienst nginx_stack_web verknüpft ist.

Schließlich können Sie den Nginx-Webserver erreichen, indem Sie einen Webbrowser öffnen und zur IP-Adresse Ihrer LabEx-VM navigieren. Sie sollten die Standard-Willkommensseite von Nginx sehen.

Entfernen eines einzelnen Stacks

In diesem Schritt lernen Sie, wie Sie einen bereitgestellten Stack von Ihrem Docker Swarm entfernen. Das Entfernen eines Stacks stoppt und entfernt alle Dienste und Container, die mit diesem Stack verknüpft sind.

Im vorherigen Schritt haben wir einen Stack namens nginx_stack bereitgestellt. Um diesen Stack zu entfernen, verwenden wir den Befehl docker stack rm gefolgt vom Stacknamen.

docker stack rm nginx_stack

Dieser Befehl startet den Entfernungsvorgang. Docker Swarm stoppt und entfernt den Dienst und seinen zugehörigen Container.

Sie sollten eine Ausgabe sehen, die anzeigt, dass der Stack und seine Dienste entfernt werden.

Um zu überprüfen, ob der Stack entfernt wurde, können Sie erneut die bereitgestellten Stacks auflisten.

docker stack ls

Der nginx_stack sollte nicht mehr in der Liste der bereitgestellten Stacks erscheinen.

Sie können auch die laufenden Dienste überprüfen, um zu bestätigen, dass der Dienst nginx_stack_web nicht mehr läuft.

docker stack services nginx_stack

Dieser Befehl sollte einen Fehler zurückgeben oder keine Ausgabe liefern, was bedeutet, dass der Stack und seine Dienste entfernt wurden.

Schließlich können Sie die laufenden Container überprüfen, um sicherzustellen, dass der Nginx-Container, der mit dem Stack verknüpft ist, entfernt wurde.

docker ps

Der Container, der das Image nginx:latest für den Dienst nginx_stack_web ausführt, sollte nicht mehr aufgeführt sein.

Bereitstellung mehrerer Beispiel-Stacks

In diesem Schritt lernen Sie, wie Sie mehrere Stacks auf Ihrem Docker Swarm bereitstellen können. Dies zeigt, wie Sie verschiedene Anwendungen oder Dienste unabhängig voneinander innerhalb desselben Swarms verwalten können.

Wir werden zwei einfache Stacks bereitstellen: einen mit Nginx und einen anderen mit dem Apache HTTP Server.

Zunächst erstellen wir ein Verzeichnis für die Definition des Apache-Stacks. Navigieren Sie zurück in das Verzeichnis ~/project und erstellen Sie ein neues Verzeichnis namens my-apache-stack.

cd ~/project
mkdir my-apache-stack
cd my-apache-stack

Nun erstellen Sie mithilfe des Editors nano eine Datei namens docker-compose.yml im Verzeichnis my-apache-stack.

nano docker-compose.yml

Fügen Sie den folgenden Inhalt in die Datei docker-compose.yml ein:

version: "3.8"
services:
  web:
    image: httpd:latest
    ports:
      - "81:80"
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure

Diese docker-compose.yml-Datei definiert einen Dienst namens web, der das Image httpd:latest verwendet. Sie ordnet Port 81 auf dem Host Port 80 im Container zu, um Portkonflikte mit dem Nginx-Stack, den wir später bereitstellen werden, zu vermeiden. Sie gibt auch eine Replik und eine Neustartrichtlinie an.

Speichern Sie die Datei, indem Sie Strg + X, dann Y und Enter drücken.

Bevor wir den Stack bereitstellen, laden wir das Image httpd:latest herunter.

docker pull httpd:latest

Nun stellen wir den Apache-Stack mithilfe des Befehls docker stack deploy bereit. Wir nennen diesen Stack apache_stack.

docker stack deploy -c docker-compose.yml apache_stack

Dieser Befehl stellt den Apache-Stack bereit.

Als nächstes gehen wir zurück in das Verzeichnis my-nginx-stack, um den Nginx-Stack erneut bereitzustellen.

cd ~/project/my-nginx-stack

Stellen Sie den Nginx-Stack mithilfe des Befehls docker stack deploy bereit. Wir nennen diesen Stack nginx_stack.

docker stack deploy -c docker-compose.yml nginx_stack

Jetzt überprüfen wir, ob beide Stacks bereitgestellt wurden. Listen Sie die bereitgestellten Stacks auf.

docker stack ls

Sie sollten sowohl apache_stack als auch nginx_stack in der Liste sehen.

Sie können auch die Dienste für jeden Stack einzeln überprüfen.

docker stack services apache_stack
docker stack services nginx_stack

Sie sollten den Dienst apache_stack_web und den Dienst nginx_stack_web sehen, beide mit 1/1 laufenden Repliken.

Sie können den Apache-Webserver erreichen, indem Sie einen Webbrowser öffnen und zur IP-Adresse Ihrer LabEx-VM auf Port 81 navigieren. Sie sollten die Standard-Willkommensseite von Apache sehen. Der Nginx-Webserver sollte weiterhin auf Port 80 erreichbar sein.

Entfernen mehrerer Stacks

In diesem letzten Schritt lernen Sie, wie Sie mehrere bereitgestellte Stacks von Ihrem Docker Swarm entfernen können. Dies ähnelt dem Entfernen eines einzelnen Stacks, aber Sie wiederholen den Vorgang für jeden Stack, den Sie entfernen möchten.

Im vorherigen Schritt haben wir zwei Stacks bereitgestellt: apache_stack und nginx_stack. Wir werden nun beide entfernen.

Zunächst entfernen wir den apache_stack. Verwenden Sie den Befehl docker stack rm gefolgt vom Stacknamen.

docker stack rm apache_stack

Sie sollten eine Ausgabe sehen, die anzeigt, dass der apache_stack und seine Dienste entfernt werden.

Als nächstes entfernen wir den nginx_stack. Verwenden Sie den Befehl docker stack rm gefolgt vom Stacknamen.

docker stack rm nginx_stack

Sie sollten eine Ausgabe sehen, die anzeigt, dass der nginx_stack und seine Dienste entfernt werden.

Um zu überprüfen, ob beide Stacks entfernt wurden, listen Sie die bereitgestellten Stacks erneut auf.

docker stack ls

Weder apache_stack noch nginx_stack sollten in der Liste der bereitgestellten Stacks erscheinen.

Sie können auch die laufenden Container überprüfen, um sicherzustellen, dass die Container, die mit beiden Stacks verknüpft waren, entfernt wurden.

docker ps

Es sollten keine Container laufen, die die Images httpd:latest oder nginx:latest verwenden, die Teil dieser Stacks waren.

Dies schließt das Lab zur Bereitstellung und Entfernung von Docker-Stacks ab. Sie haben erfolgreich einen Docker Swarm initialisiert, einzelne und mehrere Stacks bereitgestellt und entfernt.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie eine Docker Swarm-Umgebung vorbereiten, indem Sie einen Ein-Knoten-Swarm initialisieren und seinen Status überprüfen. Anschließend haben Sie geübt, eine Beispielanwendung als Stack mithilfe einer Docker Compose-Datei bereitzustellen. Schließlich haben Sie die Verwendung des Befehls docker stack rm beherrscht, um sowohl einzelne als auch mehrere bereitgestellte Stacks von Ihrem Docker Swarm zu entfernen, was den Prozess der Ressourcenbereinigung nach der Bereitstellung demonstriert.