So entfernen Sie Docker-Images, -Container und -Volumes

Ein Docker-Spickzettel

Einführung

Mit Docker können Sie Ihre Anwendungen und Dienste ganz einfach in Container packen, sodass Sie sie überall ausführen können. Bei der Arbeit mit Docker können Sie jedoch auch leicht eine übermäßige Anzahl nicht verwendeter Bilder, Container und Datenmengen ansammeln, die die Ausgabe überladen und Speicherplatz belegen.

Docker bietet Ihnen alle Tools, die Sie zum Bereinigen Ihres Systems über die Befehlszeile benötigen. Diese Anleitung im Cheat Sheet-Stil bietet eine kurze Übersicht über Befehle, die nützlich sind, um Speicherplatz freizugeben und Ihr System zu organisieren, indem nicht verwendete Docker-Images, -Container und -Volumes entfernt werden.

Verwendung dieses Handbuchs:

  • Diese Anleitung ist im Spickzettel-Format mit in sich geschlossenen Befehlszeilen-Snippets

  • Wechseln Sie zu einem Abschnitt, der für die Aufgabe relevant ist, die Sie ausführen möchten.

Die in den Befehlen verwendete Befehlssubstitutionssyntaxcommand $(command) ist in vielen gängigen Shells wie bash, zsh und Windows Powershell verfügbar.

Löschen aller nicht verwendeten oder baumelnden Images, Container, Volumes und Netzwerke

Docker stellt einen einzigen Befehl bereit, mit dem alle Ressourcen (Images, Container, Volumes und Netzwerke) bereinigt werden, die baumeln (nicht mit einem Container verknüpft):

docker system prune

Fügen Sie dem Befehl das Flag-ahinzu, um zusätzlich angehaltene Container und alle nicht verwendeten Bilder (nicht nur baumelnde Bilder) zu entfernen:

docker system prune -a

Docker-Images entfernen

Entfernen Sie ein oder mehrere bestimmte Bilder

Verwenden Sie den Befehldocker images mit dem Flag-a, um die ID der Bilder zu suchen, die Sie entfernen möchten. Dies zeigt Ihnen jedes Bild, einschließlich der Zwischenbildebenen. Wenn Sie die Bilder gefunden haben, die Sie löschen möchten, können Sie ihre ID oder ihr Tag andocker rmi übergeben:

Aufführen:

docker images -a

Entfernen:

docker rmi Image Image

Entfernen Sie herabhängende Bilder

Docker-Bilder bestehen aus mehreren Ebenen. Schlenkerbilder sind Ebenen, die keine Beziehung zu markierten Bildern haben. Sie erfüllen keinen Zweck mehr und belegen Speicherplatz. Sie können durch Hinzufügen des Filterflags-f mit dem Wertdangling=true zum Befehldocker images gefunden werden. Wenn Sie sicher sind, dass Sie sie löschen möchten, können Sie den Befehldocker images purgeverwenden:

Note: If you build an image without tagging it, the image will appear on the list of dangling images because it has no association with a tagged image. You can avoid this situation by https://docs.docker.com/engine/reference/commandline/build//tag-image—​t[providing a tag] when you build, and you can retroactively tag an images with the docker tag command.
#

Aufführen:

docker images -f dangling=true

Entfernen:

docker images purge

Bilder nach einem Muster entfernen

Sie können alle Bilder, die einem Muster entsprechen, mit einer Kombination ausdocker images undgrep finden. Sobald Sie zufrieden sind, können Sie sie löschen, indem Sieawk verwenden, um die IDs andocker rmi zu übergeben. Beachten Sie, dass diese Dienstprogramme nicht von Docker bereitgestellt werden und nicht unbedingt auf allen Systemen verfügbar sind:

Aufführen:

docker images -a |  grep "pattern"

Entfernen:

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

Entfernen Sie alle Bilder

Alle Docker-Images auf einem System können aufgelistet werden, indem-a zum Befehldocker images hinzugefügt werden. Wenn Sie sicher sind, dass Sie alle löschen möchten, können Sie das Flag-qhinzufügen, um die Bild-ID andocker rmizu übergeben:

Aufführen:

docker images -a

Entfernen:

docker rmi $(docker images -a -q)

Behälter entfernen

Entfernen Sie einen oder mehrere bestimmte Behälter

Verwenden Sie den Befehldocker ps mit dem Flag-a, um den Namen oder die ID der Container zu suchen, die Sie entfernen möchten:

Aufführen:

docker ps -a

Entfernen:

docker rm ID_or_Name ID_or_Name

Einen Behälter beim Verlassen entfernen

Wenn Sie beim Erstellen eines Containers wissen, dass Sie ihn nach Abschluss nicht mehr behalten möchten, können Siedocker run --rm ausführen, um ihn beim Beenden automatisch zu löschen.

Ausführen und entfernen:

docker run --rm image_name

Alle ausgetretenen Behälter entfernen

Sie können Container mithilfe vondocker ps -a suchen und nach ihrem Status filtern: erstellt, neu gestartet, ausgeführt, angehalten oder beendet. Verwenden Sie zum Überprüfen der Liste der verlassenen Container das Flag-f, um nach Status zu filtern. Wenn Sie überprüft haben, dass Sie diese Container entfernen möchten, übergeben Sie die IDs mit-q an den Befehldocker rm.

Aufführen:

docker ps -a -f status=exited

Entfernen:

docker rm $(docker ps -a -f status=exited -q)

Behälter mit mehr als einem Filter entfernen

Docker-Filter können kombiniert werden, indem das Filter-Flag mit einem zusätzlichen Wert wiederholt wird. Dies führt zu einer Liste von Containern, die beide Bedingungen erfüllen. Wenn Sie beispielsweise alle Container löschen möchten, die entweder alsCreated (ein Status, der sich beim Ausführen eines Containers mit einem ungültigen Befehl ergeben kann) oder alsExited gekennzeichnet sind, können Sie zwei Filter verwenden:

Aufführen:

docker ps -a -f status=exited -f status=created

Entfernen:

docker rm $(docker ps -a -f status=exited -f status=created -q)

Behälter nach einem Muster entnehmen

Sie können alle Container finden, die einem Muster entsprechen, indem Sie eine Kombination ausdocker ps undgrep verwenden. Wenn Sie zufrieden sind, dass Sie die Liste haben, die Sie löschen möchten, können Sieawk undxargs verwenden, umdocker rmi die ID zuzuweisen. Beachten Sie, dass diese Dienstprogramme nicht von Docker bereitgestellt werden und nicht unbedingt auf allen Systemen verfügbar sind:

Aufführen:

docker ps -a |  grep "pattern”

Entfernen:

docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

Stoppen Sie und entfernen Sie alle Behälter

Sie können die Container auf Ihrem System mitdocker ps überprüfen. Durch Hinzufügen des Flags-awerden alle Container angezeigt. Wenn Sie sicher sind, dass Sie sie löschen möchten, können Sie das Flag-q hinzufügen, um die IDs für die Befehledocker stop unddocker rm bereitzustellen:

Aufführen:

docker ps -a

Entfernen:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Volumes entfernen

Entfernen Sie ein oder mehrere bestimmte Volumes - Docker 1.9 und höher

Verwenden Sie den Befehldocker volume ls, um den Datenträgernamen oder die Namen zu suchen, die Sie löschen möchten. Anschließend können Sie ein oder mehrere Volumes mit dem Befehldocker volume rm entfernen:

Aufführen:

docker volume ls

Entfernen:

docker volume rm volume_name volume_name

Entfernen Sie baumelnde Volumes - Docker 1.9 und höher

Da der Punkt von Volumes unabhängig von Containern existieren soll, wird ein Volume beim Entfernen eines Containers nicht gleichzeitig automatisch entfernt. Wenn ein Volume vorhanden ist und nicht mehr mit einem Container verbunden ist, wird es als "Dangling Volume" bezeichnet. Um sie zu finden und zu bestätigen, dass Sie sie entfernen möchten, können Sie den Befehldocker volume ls mit einem Filter verwenden, um die Ergebnisse auf baumelnde Volumes zu beschränken. Wenn Sie mit der Liste zufrieden sind, können Sie sie alle mitdocker volume prune entfernen:

Aufführen:

docker volume ls -f dangling=true

Entfernen:

docker volume prune

Entfernen Sie einen Behälter und sein Volumen

Wenn Sie ein unbenanntes Volume erstellt haben, kann es gleichzeitig mit dem Container mit dem Flag-vgelöscht werden. Beachten Sie, dass dies nur mitunnamed Volumes funktioniert. Wenn der Container erfolgreich entfernt wurde, wird seine ID angezeigt. Beachten Sie, dass nicht auf das Entfernen des Volumens Bezug genommen wird. Wenn es unbenannt ist, wird es stillschweigend aus dem System entfernt. Wenn es benannt wird, bleibt es stillschweigend vorhanden.

Entfernen:

docker rm -v container_name

Fazit

Dieses Handbuch behandelt einige der allgemeinen Befehle zum Entfernen von Bildern, Containern und Volumes mit Docker. Es gibt viele andere Kombinationen und Flags, die mit jedem verwendet werden können. Eine umfassende Anleitung zu den verfügbaren Informationen finden Sie in der Docker-Dokumentation zudocker system prune,docker rmi,docker rm unddocker volume rm. Wenn Sie häufig Bereinigungsaufgaben im Handbuch sehen möchten, fragen Sie in den Kommentaren nach oder machen Sie Vorschläge.