Tutorial

Entfernen von Docker-Images, -Containern und -Volumen

Published on June 11, 2020
Deutsch
Entfernen von Docker-Images, -Containern und -Volumen

Ein Spickzettel für Docker

Einführung

Docker erleichtert das Einschließen Ihrer Anwendungen und Dienste in Containern, damit Sie sie überall ausführen können. Bei der Arbeit mit Docker kann es leicht passieren, dass viele nicht verwendete Images, Container und Datenvolumen gesammelt werden, die die Ausgabe überladen und viel Festplattenspeicher verbrauchen.

Docker gibt Ihnen alle Tools zur Hand, die Sie für die Bereinigung Ihres Systems über die Befehlszeile benötigen. Dieser Leitfaden in Form eines Spickzettels dient als schnelle Referenz zu Befehlen, die für das Freigeben von Festplattenspeicher und das Organisieren Ihres Systems durch das Entfernen nicht verwendeter Docker-Images,-Container und -Volumen nützlich sind.

Verwendung dieses Leitfadens:

  • Dieser Leitfaden weist ein Spickzettelformat mit in sich geschlossenen Befehlszeilensnippets auf.
  • Springen Sie zu einem beliebigen Abschnitt, der für die Aufgabe, die Sie ausführen möchten, relevant ist.

Die Befehlsersatzsyntax command $(command), die in vielen Befehlen genutzt wird, ist in vielen beliebten Shells wie Bash, Zsh und Windows Powershell verfügbar.

Löschen aller unbenutzten oder unreferenzierten Images, Container, Volumen und Netzwerke

Docker bietet einen einzelnen Befehl zur Bereinigung beliebiger Ressourcen – Images, Container, Volumen und Netzwerke –, die unreferenziert (also nicht mit einem Container verknüpft) sind:

  1. docker system prune

Um auch angehaltene Container und alle nicht verwendeten Images zu entfernen (nicht nur unreferenzierte Images), fügen Sie dem Befehl das Flag -a hinzu:

  1. docker system prune -a

Entfernen von Docker-Images

Entfernen von einem oder mehreren spezifischen Images

Verwenden Sie den Befehl docker images mit dem Flag -a, um die ID der Images zu finden, die Sie entfernen möchten. Dadurch wird Ihnen jedes Image angezeigt, einschließlich dazwischenliegender Image-Ebenen. Wenn Sie die Images gefunden haben, die Sie löschen möchten, können Sie ihre ID oder ihr Tag docker rmi übergeben:

Auflisten:

  1. docker images -a

Entfernen:

  1. docker rmi Image Image

Entfernen von unreferenzierten Images

Docker-Images bestehen aus mehreren Ebenen. Unreferenzierte Images sind Ebenen, die keine Beziehung zu getaggten Images haben. Sie dienen keinem Zweck mehr und verbrauchen Festplattenspeicher. Sie lassen sich finden, indem Sie das Filter-Flag (-f) mit dem Wert dangling=true zum Befehl docker images hinzufügen. Wenn Sie sicher sind, dass Sie sie löschen möchten, können Sie den Befehl docker images purge verwenden:

Anmerkung: Wenn Sie ein Image erstellen, ohne es mit einem Tag zu versehen, wird das Image in der Liste der unreferenzierten Images angezeigt, da es keine Zuordnung zu einem getaggten Image aufweist. Sie können diese Situation vermeiden, indem Sie beim Erstellen ein Tag angeben; außerdem können Sie Images mit dem Befehl docker tag im Nachhinein mit einem Tag versehen.

Auflisten:

  1. docker images -f dangling=true

Entfernen:

  1. docker images purge

Entfernen von Images gemäß einem Muster

Sie können alle Images finden, die mit einem Muster übereinstimmen, indem Sie eine Kombination aus docker images und grep nutzen. Wenn Sie damit zufrieden sind, können Sie sie durch awk löschen, um die IDs an docker rmi zu übergeben. Beachten Sie, dass diese Dienstprogramme nicht von Docker bereitgestellt werden und nicht unbedingt für alle Systeme verfügbar sind:

Auflisten:

  1. docker images -a | grep "pattern"

Entfernen:

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

Alle Images entfernen

Alle Docker-Images in einem System können aufgelistet werden, indem Sie dem Befehl docker images -a hinzufügen. Wenn Sie sicher sind, dass Sie alle löschen möchten, können Sie das Flag -q hinzufügen, um die Image-ID an docker rmi zu übergeben:

Auflisten:

  1. docker images -a

Entfernen:

  1. docker rmi $(docker images -a -q)

Entfernen von Containern

Entfernen von einem oder mehreren spezifischen Containern

Verwenden Sie den Befehl docker ps mit dem Flag -a, um den Namen oder die ID der Container zu finden, die Sie entfernen möchten.

Auflisten:

  1. docker ps -a

Entfernen:

  1. docker rm ID_or_Name ID_or_Name

Entfernen eines Containers beim Beenden

Falls Sie bei der Erstellung eines Containers wissen, dass Sie ihn nicht behalten möchten, wenn Sie damit fertig sind, können Sie docker run --rm ausführen, um ihn beim Beenden automatisch zu löschen.

Ausführen und entfernen:

  1. docker run --rm image_name

Entfernen aller beendeten Container

Sie können Container mit docker ps -a finden und anhand ihres Status filtern: erstellt, wird neu gestartet, wird ausgeführt, angehalten oder beendet. Zum Überprüfen der Liste der beendeten Container verwenden Sie das Flag -f, um anhand des Status zu filtern. Wenn Sie wissen, dass Sie diese Container entfernen möchten, nutzen Sie -q, um die IDs an den Befehl docker rm zu übergeben.

Auflisten:

  1. docker ps -a -f status=exited

Entfernen:

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

Entfernen von Containern mit mehr als einem Filter

Docker-Filter lassen sich kombinieren, indem Sie das Filter-Flag mit einem zusätzlichen Wert wiederholen. Dadurch wird eine Liste von Containern angezeigt, die beide Bedingungen erfüllen. Wenn Sie zum Beispiel alle Container löschen möchten, die als entweder Created (ein Zustand, der bei der Ausführung eines Containers mit ungültigem Befehl auftreten kann) oder Exited markiert sind, können Sie zwei Filter verwenden:

Auflisten:

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

Entfernen:

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

Entfernen von Containern gemäß einem Muster

Sie können alle Container finden, die mit einem Muster übereinstimmen, indem Sie eine Kombination von docker ps und grep nutzen. Wenn Sie soweit sind, dass Sie über die Liste verfügen, die Sie löschen möchten, können Sie awk und xargs verwenden, um die ID an docker rmi zu übergeben. Beachten Sie, dass diese Dienstprogramme nicht von Docker bereitgestellt werden und nicht unbedingt für alle Systeme verfügbar sind:

Auflisten:

  1. docker ps -a | grep "pattern

Entfernen:

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

Stoppen und Entfernen aller Container

Sie können die Container in Ihrem System mit docker ps überprüfen. Durch Hinzufügen des Flag -a werden 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 an die Befehle docker stop und docker rm zu übergeben:

Auflisten:

  1. docker ps -a

Entfernen:

  1. docker stop $(docker ps -a -q)
  2. docker rm $(docker ps -a -q)

Entfernen von Volumen

Entfernen von einem oder mehreren spezifischen Volumen (Docker 1.9 und höher)

Verwenden Sie den Befehl docker volume ls, um nach dem bzw. den Volumennamen zu suchen, die Sie löschen möchten. Dann können Sie ein oder mehrere Volumen mit dem Befehl docker volume rm entfernen:

Auflisten:

  1. docker volume ls

Entfernen:

  1. docker volume rm volume_name volume_name

Entfernen unreferenzierter Images (Docker 1.9 und höher)

Da die Aufgabe von Volumen darin besteht, unabhängig von Containern zu existieren, wird ein Volumen bei der Entfernung eines Containers nicht automatisch entfernt. Wenn ein Volumen vorhanden ist und nicht mehr mit Containern verbunden ist, wird es als unreferenziertes Volumen bezeichnet. Um sie zu finden und zu bestätigen, dass Sie sie entfernen möchten, können Sie den Befehl docker volume ls mit einem Filter verwenden, um die Ergebnisse auf unreferenzierte Volumen zu beschränken. Wenn Sie mit der Liste zufrieden sind, können Sie sie alle mit docker volume prune entfernen:

Auflisten:

  1. docker volume ls -f dangling=true

Entfernen:

  1. docker volume prune

Entfernen eines Containers und seines Volumen

Wenn Sie ein nicht benanntes Volumen erstellt haben, können Sie es mit dem Flag -v zusammen mit dem Container löschen. Beachten Sie, dass das nur bei nicht benannten Volumen funktioniert. Wenn der Container erfolgreich entfernt wurde, wird seine ID angezeigt. Beachten Sie, dass es keinen Hinweis auf die Entfernung des Volumens gibt. Wenn es nicht benannt ist, wird es leise aus dem System entfernt. Wenn es benannt ist, bleibt es im Stillen vorhanden.

Entfernen:

  1. docker rm -v container_name

Zusammenfassung

Dieser Leitfaden behandelt gängige Befehle, die zum Entfernen von Images, Containern und Volumen bei Docker verwendet werden. Es gibt viele weitere Kombinationen und Flags, die dafür genutzt werden können. Einen umfassenden Leitfaden zu den verfügbaren Befehlen finden Sie in der Docker-Dokumentation für docker system prune, docker rmi, docker rm und docker volume rm. Wenn es allgemeine Bereinigungsaufgaben gibt, die im Leitfaden besprochen werden sollten, fragen Sie nach oder machen Sie in den Kommentaren Vorschläge.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel