Entfernen von Services, die nicht mehr in der Compose-Datei referenziert werden
In diesem Schritt werden wir erneut unsere docker-compose.yml
-Datei ändern, diesmal indem wir einen Service entfernen. Wenn wir den Stack erneut bereitstellen, erkennt Docker Swarm, dass ein Service nicht mehr in der Compose-Datei definiert ist und entfernt ihn. Dieser Prozess wird manchmal als "Pruning" (Entfernen) von Services bezeichnet.
Zunächst bearbeiten wir die docker-compose.yml
-Datei, um den alpine
-Service zu entfernen.
nano ~/project/docker-compose.yml
Entfernen Sie den gesamten alpine:
-Abschnitt aus der Datei. Die Datei sollte wieder in ihren ursprünglichen Zustand zurückkehren und nur den web
-Service definieren:
version: "3.8"
services:
web:
image: nginx:1.21.6
ports:
- "80:80"
Speichern Sie die geänderte Datei, indem Sie Strg + X
, dann Y
und anschließend Enter
drücken.
Jetzt stellen wir den Stack erneut mit der geänderten docker-compose.yml
-Datei bereit.
docker stack deploy -c ~/project/docker-compose.yml mywebstack
Docker Swarm vergleicht den aktuellen Zustand des mywebstack
-Stacks mit der Definition in der aktualisierten docker-compose.yml
-Datei. Es wird feststellen, dass der alpine
-Service nicht mehr in der Datei vorhanden ist und wird den entsprechenden Service und seine Tasks aus dem Swarm entfernen. Sie sollten eine Ausgabe sehen, die anzeigt, dass der alpine
-Service entfernt wird.
Um zu überprüfen, dass der alpine
-Service entfernt wurde, listen wir die Services im Stack erneut auf.
docker stack services mywebstack
Sie sollten jetzt nur den mywebstack_web
-Service in der Liste sehen. Der mywebstack_alpine
-Service sollte verschwunden sein.
Schließlich können wir, um die Swarm-Umgebung aufzuräumen, den gesamten Stack entfernen.
docker stack rm mywebstack
Dieser Befehl entfernt den mywebstack
-Stack, einschließlich aller seiner Services und Tasks. Sie sollten eine Ausgabe sehen, die die Entfernung bestätigt.
Um zu überprüfen, dass der Stack entfernt wurde, listen wir die Stacks erneut auf.
docker stack ls
Der mywebstack
sollte nicht mehr in der Liste erscheinen.
Sie haben erfolgreich einen Service aus Ihrem Stack entfernt, indem Sie ihn aus der docker-compose.yml
-Datei gelöscht und den Stack erneut bereitgestellt haben, und haben dann die Umgebung aufgeräumt, indem Sie den gesamten Stack entfernt haben.