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:
Die Befehlsersatzsyntax command $(command)
, die in vielen Befehlen genutzt wird, ist in vielen beliebten Shells wie Bash, Zsh und Windows Powershell verfügbar.
Docker bietet einen einzelnen Befehl zur Bereinigung beliebiger Ressourcen – Images, Container, Volumen und Netzwerke –, die unreferenziert (also nicht mit einem Container verknüpft) sind:
- 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:
- docker system prune -a
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:
- docker images -a
Entfernen:
- docker rmi Image Image
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:
- docker images -f dangling=true
Entfernen:
- docker images purge
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:
- docker images -a | grep "pattern"
Entfernen:
- docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
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:
- docker images -a
Entfernen:
- docker rmi $(docker images -a -q)
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:
- docker ps -a
Entfernen:
- docker rm ID_or_Name ID_or_Name
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:
- docker run --rm image_name
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:
- docker ps -a -f status=exited
Entfernen:
- docker rm $(docker ps -a -f status=exited -q)
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:
- docker ps -a -f status=exited -f status=created
Entfernen:
- docker rm $(docker ps -a -f status=exited -f status=created -q)
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:
- docker ps -a | grep "pattern”
Entfernen:
- docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
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:
- docker ps -a
Entfernen:
- docker stop $(docker ps -a -q)
- docker rm $(docker ps -a -q)
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:
- docker volume ls
Entfernen:
- docker volume rm volume_name volume_name
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:
- docker volume ls -f dangling=true
Entfernen:
- docker volume prune
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:
- docker rm -v container_name
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.
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!