One place for hosting & domains

      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:

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

      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:

      Entfernen:

      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:

      • docker images -f dangling=true

      Entfernen:

      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:

      • docker images -a | grep "pattern"

      Entfernen:

      • 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:

      Entfernen:

      • 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:

      Entfernen:

      • 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:

      • 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:

      • docker ps -a -f status=exited

      Entfernen:

      • 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:

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

      Entfernen:

      • 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:

      • docker ps -a | grep "pattern

      Entfernen:

      • 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:

      Entfernen:

      • docker stop $(docker ps -a -q)
      • 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:

      Entfernen:

      • 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:

      • docker volume ls -f dangling=true

      Entfernen:

      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:

      • 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.



      Source link