Wie man den docker network prune-Befehl verwendet, um unbenutzte Netzwerke 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 Ihre Docker-Netzwerke effektiv verwalten können, indem Sie den Befehl docker network prune nutzen. Wir beginnen damit, mehrere benutzerdefinierte Netzwerke zu erstellen, um ein realistisches Szenario mit mehreren Netzwerken zu simulieren.

Nachdem diese Netzwerke erstellt wurden, lernen Sie, wie Sie auflisten und feststellen können, welche Netzwerke derzeit nicht verwendet werden. Abschließend üben Sie die Verwendung des Befehls docker network prune, um diese unbenutzten Netzwerke zu entfernen, einschließlich der Anwendung von Filtern für ein gezielteres Entfernen. Diese praktische Erfahrung wird Sie mit den Fähigkeiten ausstatten, Ihre Docker-Umgebung sauber und optimiert zu halten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555178{{"Wie man den docker network prune-Befehl verwendet, um unbenutzte Netzwerke zu entfernen"}} docker/ps -.-> lab-555178{{"Wie man den docker network prune-Befehl verwendet, um unbenutzte Netzwerke zu entfernen"}} docker/rm -.-> lab-555178{{"Wie man den docker network prune-Befehl verwendet, um unbenutzte Netzwerke zu entfernen"}} docker/prune -.-> lab-555178{{"Wie man den docker network prune-Befehl verwendet, um unbenutzte Netzwerke zu entfernen"}} docker/network -.-> lab-555178{{"Wie man den docker network prune-Befehl verwendet, um unbenutzte Netzwerke zu entfernen"}} end

Erstellen von benutzerdefinierten Netzwerken

In diesem Schritt lernen wir, wie man benutzerdefinierte Netzwerke in Docker erstellt. Standardmäßig bietet Docker drei Netzwerke: bridge, host und none. Sie können jedoch Ihre eigenen benutzerdefinierten Netzwerke erstellen, um Container voneinander zu isolieren und zu steuern, wie sie miteinander kommunizieren.

Um ein benutzerdefiniertes Netzwerk zu erstellen, verwenden wir den Befehl docker network create. Erstellen wir ein Bridge-Netzwerk namens my-network-1.

docker network create my-network-1

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die darauf hinweist, dass das Netzwerk erfolgreich erstellt wurde:

<network_id>

Jetzt erstellen wir ein weiteres Bridge-Netzwerk namens my-network-2.

docker network create my-network-2

Auch hier sollten Sie eine Netzwerk-ID als Ausgabe sehen.

Wir können überprüfen, ob die Netzwerke erstellt wurden, indem wir alle verfügbaren Netzwerke mit dem Befehl docker network ls auflisten.

docker network ls

Die Ausgabe zeigt eine Liste der Netzwerke, einschließlich der Standardnetzwerke und der beiden von uns gerade erstellten benutzerdefinierten Netzwerke (my-network-1 und my-network-2).

Auflisten von Netzwerken, um unbenutzte zu identifizieren

In diesem Schritt lernen wir, wie man Docker-Netzwerke auflisten und diejenigen identifizieren kann, die derzeit von keinem Container verwendet werden. Dies ist nützlich, um Ihre Docker-Umgebung aufzuräumen und Ressourcen freizugeben.

Wir haben im vorherigen Schritt bereits den Befehl docker network ls verwendet, um alle Netzwerke aufzulisten. Lassen Sie uns ihn erneut ausführen, um den aktuellen Zustand zu sehen.

docker network ls

Die Ausgabe zeigt die Netzwerk-ID, den Namen, den Treiber und den Geltungsbereich für jedes Netzwerk. Beachten Sie, dass die von uns erstellten Netzwerke my-network-1 und my-network-2 aufgeführt sind.

Um unbenutzte Netzwerke zu identifizieren, können wir den Befehl docker network prune mit der Option --dry-run verwenden. Diese Option ermöglicht es uns, zu sehen, welche Netzwerke entfernt würden, ohne sie tatsächlich zu entfernen.

docker network prune --dry-run

Die Ausgabe dieses Befehls listet die Netzwerke auf, die an keinen laufenden Container angehängt sind und entfernt würden. Da wir keine Container an my-network-1 oder my-network-2 angehängt haben, sollten sie in der Ausgabe des Testlaufs erscheinen.

Lassen Sie uns einen einfachen Container ausführen, der an my-network-1 angehängt ist, um zu sehen, wie sich dies auf die Ausgabe von docker network prune --dry-run auswirkt. Wir verwenden das hello-world-Image, das sehr klein ist. Zuerst laden wir das Image herunter:

docker pull hello-world

Jetzt führen wir einen Container mit diesem Image aus und hängen ihn an my-network-1 an. Die Option -d führt den Container im detached-Modus (im Hintergrund) aus.

docker run -d --network my-network-1 hello-world

Sie sehen eine Container-ID als Ausgabe.

Jetzt führen wir den Befehl docker network prune --dry-run erneut aus.

docker network prune --dry-run

Diesmal sollte my-network-1 nicht in der Liste der zu entfernenden Netzwerke erscheinen, da es vom laufenden hello-world-Container verwendet wird. my-network-2, das nicht verwendet wird, sollte weiterhin aufgeführt sein.

Um den hello-world-Container zu stoppen und zu entfernen, finden Sie zuerst seine ID mit docker ps.

docker ps

Stoppen Sie dann den Container mit docker stop <container_id> und entfernen Sie ihn mit docker rm <container_id>. Ersetzen Sie <container_id> durch die tatsächliche ID aus der docker ps-Ausgabe.

docker stop <container_id>
docker rm <container_id>

Jetzt sollten, wenn Sie docker network prune --dry-run erneut ausführen, sowohl my-network-1 als auch my-network-2 als zu entfernende Netzwerke aufgeführt sein, da sie nicht mehr in Verwendung sind.

Entfernen aller unbenutzten Netzwerke

In diesem Schritt lernen wir, wie man alle unbenutzten Netzwerke mit dem Befehl docker network prune entfernt. Dieser Befehl ist nützlich, um Ihre Docker-Umgebung aufzuräumen und Ressourcen freizugeben, indem Netzwerke entfernt werden, die derzeit an keinen Container angehängt sind.

Bevor wir die Netzwerke entfernen, lassen Sie uns erneut alle Netzwerke auflisten, um zu sehen, welche derzeit vorhanden sind.

docker network ls

Sie sollten die Standardnetzwerke (bridge, host, none) und die benutzerdefinierten Netzwerke sehen, die wir im ersten Schritt erstellt haben (my-network-1 und my-network-2). Da wir im vorherigen Schritt den hello-world-Container gestoppt und entfernt haben, sollten sowohl my-network-1 als auch my-network-2 jetzt unbenutzt sein.

Um alle unbenutzten Netzwerke zu entfernen, führen Sie einfach den Befehl docker network prune ohne zusätzliche Optionen aus. Docker wird Sie zur Bestätigung der Aktion auffordern.

docker network prune

Sie werden eine Nachricht sehen, die Sie zur Bestätigung auffordert, wie diese:

WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N]

Geben Sie y ein und drücken Sie die Eingabetaste, um mit der Entfernung fortzufahren.

Die Ausgabe wird die entfernten Netzwerke auflisten und die insgesamt wiedergewonnene Speichermenge anzeigen.

Jetzt lassen Sie uns erneut alle Netzwerke auflisten, um zu bestätigen, dass my-network-1 und my-network-2 entfernt wurden.

docker network ls

Sie sollten jetzt nur die Standardnetzwerke (bridge, host, none) in der Liste sehen.

Entfernen unbenutzter Netzwerke mit Filtern

In diesem Schritt lernen wir, wie man unbenutzte Netzwerke mithilfe von Filtern entfernt. Filter ermöglichen es Ihnen, Netzwerke gezielt basierend auf bestimmten Kriterien, wie z. B. Labels oder Erstellungszeit, zu entfernen.

Zunächst erstellen wir ein paar neue Netzwerke mit Labels, um die Filterung zu demonstrieren. Wir erstellen network-a mit dem Label env=dev und network-b mit dem Label env=test.

docker network create --label env=dev network-a
docker network create --label env=test network-b

Sie sollten für beide Befehle die Netzwerk-IDs als Ausgabe sehen.

Jetzt lassen Sie uns die Netzwerke auflisten, um die neu erstellten mit ihren Labels zu sehen.

docker network ls

Sie sollten network-a und network-b in der Liste sehen.

Um Netzwerke basierend auf einem Filter zu entfernen, verwenden wir die Option --filter mit dem Befehl docker network prune. Beispielsweise können wir alle unbenutzten Netzwerke mit dem Label env=dev entfernen, indem wir den Filter label=env=dev verwenden.

Lassen Sie uns zunächst einen Testlauf durchführen, um zu sehen, welche Netzwerke mit diesem Filter entfernt würden.

docker network prune --filter label=env=dev --dry-run

Die Ausgabe sollte network-a als das Netzwerk anzeigen, das entfernt würde, da es das Label env=dev hat und derzeit unbenutzt ist.

Jetzt entfernen wir tatsächlich die unbenutzten Netzwerke mit dem Label env=dev.

docker network prune --filter label=env=dev

Sie werden zur Bestätigung aufgefordert. Geben Sie y ein und drücken Sie die Eingabetaste.

Die Ausgabe wird anzeigen, dass network-a entfernt wurde.

Lassen Sie uns erneut die Netzwerke auflisten, um zu bestätigen, dass network-a verschwunden ist, aber network-b (mit dem Label env=test) noch vorhanden ist.

docker network ls

Sie sollten network-b in der Liste sehen, aber nicht network-a.

Sie können auch basierend auf anderen Kriterien filtern, wie z. B. Netzwerken, die vor einem bestimmten Zeitpunkt erstellt wurden. Die Filterung nach Labels ist jedoch eine häufige und nützliche Methode, um Ihre Netzwerke zu verwalten.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Docker-Netzwerke verwaltet, wobei wir uns speziell auf die Identifizierung und Entfernung unbenutzter Netzwerke konzentriert haben. Wir haben begonnen, indem wir benutzerdefinierte Bridge-Netzwerke mit dem Befehl docker network create erstellt haben, um zu zeigen, wie man neue Netzwerke neben den Standardnetzwerken hinzufügen kann. Anschließend haben wir den Befehl docker network ls verwendet, um alle verfügbaren Netzwerke aufzulisten und die Erstellung unserer benutzerdefinierten Netzwerke zu überprüfen.

Danach haben wir untersucht, wie man unbenutzte Netzwerke identifiziert. Wir haben gelernt, dass der Befehl docker network prune, insbesondere mit der Option --dry-run, ein wertvolles Werkzeug ist, um vorherzuschaun, welche Netzwerke an keinen Container angehängt sind und somit für die Entfernung in Frage kommen. Dieser Schritt ist entscheidend, um die Auswirkungen des Entfernens von Netzwerken zu verstehen, bevor man tatsächlich welche löscht.