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-a
hinzu, 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 purge
verwenden:
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-q
hinzufügen, um die Bild-ID andocker rmi
zu ü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-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 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-v
gelö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.