Wie lassen sich Docker-Images, Container und Volumes effizient entfernen?
Docker vereinfacht die Bündelung Ihrer Anwendungen und Dienste in Containern und macht diese dadurch portabel und einfach bereitzustellen. Im Laufe der Zeit sammeln sich jedoch häufig viele ungenutzte Images, Container und Volumes an. Diese können Ihre Umgebung überladen und wertvollen Speicherplatz beanspruchen.
Glücklicherweise enthält Docker verschiedene integrierte Tools, mit denen Sie Ihr System direkt über die Befehlszeile verwalten und bereinigen können.
In dieser Anleitung führen wir Sie Schritt für Schritt durch den Prozess zum Entfernen von Docker-Images sowie anderer ungenutzter Ressourcen wie Container und Volumes. Wenn Sie die beschriebenen Schritte befolgen, lernen Sie, wie Sie Ihre Docker-Umgebung effektiv bereinigen, wertvollen Speicherplatz zurückgewinnen und ein übersichtliches System aufrechterhalten können.
Docker-Images, Container, Volumes und Netzwerke entfernen? (Schritt-für-Schritt-Anleitung)
Docker bietet einen einzigen Befehl zum Entfernen aller Docker-Images und anderer Ressourcen, einschließlich Container, Volumes und Netzwerke, die nicht mit einem Tag versehen oder mit keinem Container verknüpft sind.
docker system prune
Der obige Befehl bereinigt ungenutzte Docker-Ressourcen, indem er Docker-Container, „dangling“ Images, ungenutzte Volumes und Netzwerke entfernt, die mit keinem Container verbunden sind. Standardmäßig werden nur Ressourcen gelöscht, deren Entfernung unbedenklich ist. Durch Hinzufügen des --all-Flags werden alle ungenutzten Images entfernt, nicht nur die „dangling“ Images.
Um Docker-Container, die derzeit nicht ausgeführt werden, sowie alle ungenutzten Images (einschließlich derer, die nicht „dangling“ sind) zu entfernen, fügen Sie dem Befehl das -a-Flag hinzu.
docker system prune -a
Docker-Images entfernen
Um bestimmte Images zu entfernen, verwenden Sie zunächst den Befehl docker images mit dem Flag -a. Dadurch werden alle Images einschließlich der Zwischen-Layers angezeigt, sodass Sie die IDs der Images identifizieren können, die Sie löschen möchten.
docker images -a
Sobald Sie die gewünschten Images identifiziert haben, verwenden Sie deren ID oder Tag mit dem Befehl `docker rmi`, um sie zu entfernen.
docker rmi Image Image
Dangling-Docker-Images entfernen
Docker-Images bestehen aus mehreren Layern, und „dangling“ Images sind Layer, die keinem mit einem Tag versehenen Image zugeordnet sind. Diese Layer sind überflüssig und belegen Speicherplatz.
Wenn Sie ein Image erstellen, ohne ihm ein Tag zuzuweisen, wird es als „dangling“ Image angezeigt, da es keinem mit einem Tag versehenen Image zugeordnet ist. Um dies zu vermeiden, geben Sie beim Erstellen eines Images stets ein Tag an. Alternativ können Sie einem bestehenden Image später mithilfe des Befehls `docker tag` ein Tag hinzufügen.
Sie können diese finden, indem Sie den Befehl „docker images“ mit dem Flag -f verwenden und den Wert auf dangling=true setzen. Sobald Sie bestätigt haben, dass Sie diese entfernen möchten, verwenden Sie den Befehl „docker image prune“, um die „dangling images“ zu löschen.
docker images -f dangling=true
Nun können Sie diese Images mit dem unten angegebenen Befehl entfernen:
docker image prune
Alle Images entfernen
Sie können alle Docker-Images auf einem System auflisten, indem Sie den Befehl „docker images“ mit dem Flag „-a“ verwenden.
docker images -a
Sobald Sie sich entschieden haben, diese zu löschen, fügen Sie das Flag „-q“ hinzu, um nur die Image-IDs anzuzeigen, die dann zur Entfernung an den Befehl „docker rmi“ übergeben werden können.
docker rmi $(docker images -a -q)
Bilder anhand eines bestimmten Musters löschen
Um Bilder anhand eines bestimmten Musters zu entfernen, können Sie eine Kombination aus dem Befehl `docker images` und `grep` verwenden, um die Bilder zu filtern.
docker images -a | grep "pattern"
Sobald Sie die Images identifiziert haben, verwenden Sie `awk`, um deren IDs zu extrahieren, und übergeben Sie diese an den Befehl `docker rmi` zum Löschen. Beachten Sie, dass diese Dienstprogramme nicht in Docker integriert sind und möglicherweise nicht auf allen Systemen verfügbar sind.
docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi
Docker-Container entfernen
Um bestimmte Container zu entfernen, verwenden Sie den Befehl docker ps mit dem Flag -a, um alle Container aufzulisten.
docker ps -a
Mit dem oben genannten Befehl können Sie die Namen oder IDs der Container ermitteln, die Sie löschen möchten. Wenn Sie nun einen Container löschen möchten, können Sie dies mit folgendem Befehl tun:
docker rm ID_or_Name ID_or_Name
Einen Container nach Beendigung entfernen
Um einen Container nach seinem Beenden automatisch zu entfernen, können Sie bei der Erstellung des Containers den Befehl `docker run --rm` verwenden. Dadurch wird sichergestellt, dass der Container gelöscht wird, sobald er seine Ausführung beendet hat.
docker run --rm image_name
Alle beendeten Container löschen
Um Container zu finden, verwenden Sie den Befehl docker ps -a, der alle Container unabhängig von ihrem Status anzeigt: erstellt, wird neu gestartet, läuft, angehalten, oder beendet. Um sich auf beendete Container zu konzentrieren, verwenden Sie das -f-Flag und filtern Sie nach dem Status.
docker ps -a -f status=exited
Sobald Sie die Container identifiziert haben, die Sie entfernen möchten, verwenden Sie das -q-Flag, um deren IDs abzurufen, und übergeben Sie diese an den Befehl `docker rm` zum Löschen.
docker rm $(docker ps -a -f status=exited -q)
Container anhand eines Musters entfernen
Sie können Container identifizieren, die einem bestimmten Muster entsprechen, indem Sie den Befehl `docker ps` mit `grep` kombinieren.
docker ps -a | grep "pattern”
Nachdem Sie die Container gefiltert haben, die Sie löschen möchten, verwenden Sie awk und xargs, um deren IDs an den Befehl `docker rm` zu übergeben. Beachten Sie, dass diese Dienstprogramme nicht Teil von Docker sind und möglicherweise nicht auf allen Systemen verfügbar sind.
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm
Entfernen von Containern mithilfe mehrerer Filter
Sie können in Docker mehrere Filter anwenden, indem Sie das Filter-Flag mehrmals verwenden, jeweils mit einem anderen Wert. Auf diese Weise können Sie Container auflisten, die eine der angegebenen Bedingungen erfüllen. Um beispielsweise alle Container zu entfernen, die sich entweder im Status „created“ befinden (was auftreten kann, wenn ein Container mit einem ungültigen Befehl gestartet wurde) oder beendet wurden, können Sie zwei separate Filter verwenden.
docker ps -a -f status=exited -f status=created
Um diese Container zu entfernen, verwenden Sie folgenden Befehl:
docker rm $(docker ps -a -f status=exited -f status=created -q)
Alle Container anhalten und löschen
Um alle Container auf Ihrem System anzuzeigen, verwenden Sie den Befehl `docker ps`. Durch Hinzufügen des Flags `-a` können Sie alle Container anzeigen, einschließlich der angehaltenen.
docker ps -a
Sobald Sie bereit sind, diese zu entfernen, verwenden Sie das Flag `-q`, um die Container-IDs abzurufen, und übergeben Sie diese an die Befehle `docker stop` und `docker rm`, um die Container anzuhalten und zu löschen.
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Docker-Volumes entfernen
Um die Namen der Volumes zu ermitteln, die Sie löschen möchten, verwenden Sie den Befehl docker volume ls.
docker volume ls
Nachdem Sie die Volumes identifiziert haben, können Sie eines oder mehrere davon mit dem Befehl „docker volume rm“ entfernen.
docker volume rm volume_name volume_name
Docker-Container und dessen Volume entfernen
Wenn Sie einen Container mit einem unbenannten Volume erstellen, können Sie sowohl den Container als auch das Volume gleichzeitig entfernen, indem Sie das Flag „-v“ verwenden. Dies funktioniert nur bei unbenannten Volumes.
docker rm -v container_name
Sobald der Container gelöscht ist, wird dessen ID angezeigt, es erfolgt jedoch kein direkter Hinweis auf die Entfernung des Volumes.
Ist das Volume unbenannt, wird es stillschweigend aus dem System entfernt. Ist es jedoch benannt, verbleibt das Volume im System, ohne entfernt zu werden.
Entfernen von „Dangling“-Docker-Volumes
Volumes sind so konzipiert, dass sie unabhängig von Containern existieren; wenn also ein Container entfernt wird, wird das zugehörige Volume nicht automatisch gelöscht. Ist ein Volume nicht mehr an einen Container angehängt, wird es zu einem „Dangling“-Volume.
Um diese Volumes zu identifizieren, verwenden Sie den Befehl docker volume ls mit einem Filter, der nur die „dangling“-Volumes anzeigt.
docker volume ls -f dangling=true
Sobald Sie die Liste überprüft haben, können Sie alle diese Volumes auf einmal mit dem Befehl docker volume prune entfernen.
docker volume prune
Fazit
Dieser Leitfaden stellt einige der wichtigsten Befehle zum Entfernen von Docker-Images, Containern und Volumes vor. Es gibt verschiedene weitere Optionen und Flags, die Sie bei jedem Befehl für unterschiedliche Anwendungsfälle verwenden können. Eine detaillierte Übersicht finden Sie in der Docker-Dokumentation zu Befehlen wie „docker system prune“, „docker rmi“, „docker rm“ und „docker volume rm“. Falls Ihnen gängige Bereinigungsaufgaben einfallen, die Sie gerne behandelt sehen würden, können Sie diese gerne in den Kommentaren vorschlagen.
Suchen Sie nach zuverlässiger Leistung und skalierbaren Lösungen für Ihre Projekte? Entdecken Sie BlueVPS.com – mit einfachen, anpassbaren und dedizierten Umgebungen mit unbegrenztem Datenverkehr und hervorragender Cloud-Verfügbarkeit. Warten Sie nicht länger, entdecken Sie das Angebot jetzt und steigern Sie noch heute die Leistung Ihres VPS!
Blog