Docker Volumes, Images und Container entfernen – So gehts!

Einleitung

Docker ist ein Tool, das dir hilft, deine Softwareanwendungen und -dienste so zu verpacken, dass du sie auf verschiedenen Plattformen ausführen kannst. Bei der Verwendung von Docker kann sich jedoch leicht eine Menge unnötiger Dateien ansammeln. Dazu gehören Daten wie z. B. alte Images und Datenvolumen, die Platz auf deinem Computer oder deinem VPS beanspruchen.

Aber keine Sorge! Docker stellt dir einige Tools zur Verfügung, mit denen du deinen Server aufräumen und all die überflüssigen Dateien loswerden kannst. Dieser Leitfaden ist wie ein Spickzettel, der dir einige einfache Befehle zeigt, die du verwenden kannst, um Speicherplatz freizugeben und deinen Server zu organisieren, indem du alle unnötigen Docker-Dateien entfernst.

Entfernen von Unbenutzten Images, Containern, Volumes und Netzwerken

Docker verfügt über einen Befehl, mit dem alle Ressourcen entfernt werden können, die nicht mit einem Container verknüpft oder markiert sind. Dieser Befehl funktioniert für verschiedene Arten von Ressourcen, wie z. B. Images, Container, Volumes und Netzwerke.

docker system prune

Wenn du nicht nur die „Dangling-Images“, sondern auch alle unbenutzten Images und gestoppten Container entfernen willst, kannst du den Befehl mit dem Flag -a ergänzen:

docker system prune -a

Volumes Entfernen

In diesem Abschnitt zeigen wir dir, wie du Docker Volumes entfernen kannst.

Spezifische Docker Volumes Entfernen

Um ein oder mehrere Docker-Volumes zu löschen, verwende zunächst den Befehl docker volume ls, um den oder die Namen der Volumes zu finden, die Du entfernen möchtest. Nutze dann den Befehl docker volume rm mit dem/den Namen des/der Volumes, um das/die Volume(s) zu entfernen.

Um alle Docker-Volumes aufzulisten, nutze diesen Befehl:

docker volume ls

Um nun ein spezifisches Volume zu löschen, nutze diesen Befehl:

docker volume rm [volume_name]

Nicht-genutzte Docker Volumes entfernen

Um sicherzustellen, dass die Datenträger über die Lebensdauer eines Containers hinaus bestehen bleiben, werden sie nicht automatisch entfernt, wenn ein Container gelöscht wird. Daher kann es vorkommen, dass du „dangling volumes“ hast, die mit keinem Container mehr verbunden sind. Diese Volumes kannst Du mit dem Befehl docker volume ls identifizieren und nach „dangling volumes“ filtern. Sobald Du Dir sicher bist, dass Du sie entfernen willst, kannst Du den Befehl docker volume prune verwenden, um sie alle zu löschen.

Um alle Dangling-Docker-Volumes aufzulisten, verwende diesen Befehl:

docker volume ls -f dangling=true

Und verwende diesen Befehl, um alle freien Datenträger zu löschen:

docker volume prune

Entfernen von Containern und zugehörigen Volumes

Du kannst ein unbenanntes Volume zusammen mit dem zugehörigen Container löschen, indem du beim Entfernen des Containers den Flag -v verwendest. Es ist wichtig zu beachten, dass dies nur für unbenannte Datenträger funktioniert. Wenn der Container erfolgreich gelöscht wurde, wird seine ID angezeigt, aber es wird kein Hinweis auf die Entfernung des Volumes gegeben. Wenn das Volume unbenannt ist, wird es stillschweigend aus dem System gelöscht, während es, wenn es einen Namen hat, zwar vorhanden bleibt, aber ohne zugehörigen Container.

Um nun Container und die dazugehörigen Volumes zu entfernen, benutze diesen Befehl:

docker rm -v [container_name]

Docker Images entfernen

Im folgenden Abschnitt zeigen wir dir, wie du Docker Images mit integrierten Befehlen löschen kannst.

Spezifische Docker Images löschen

Um die IDs der Images zu finden, die du löschen willst, kannst du den Befehl „docker images“ verwenden und den Flag -a einfügen. Dadurch werden alle Images angezeigt, auch die Zwischenschichten. Sobald du die Images identifiziert hast, die du entfernen möchtest, kannst du den Befehl „docker rmi“ verwenden und ihre ID oder ihr Tag angeben.

Mit diesem Befehl kannst du alle Docker-Images anzeigen lassen:

docker images –a

Je nach Anzahl der Images auf deinem Server wird der Output etwa so aussehen:

Um ein Image zu entfernen, nutze diesen Befehl:

docker rmi [Image] 

Ersetze [Image] mit dem Namen des Images, das du entfernen willst.

Ungenutze Images entfernen

Docker-Images bestehen aus verschiedenen Schichten, und einige dieser Schichten können sich von den markierten Images ablösen. Diese abgetrennten Schichten werden als „dangling images“ bezeichnet und nehmen im Grunde nur Platz auf deinem System ein, ohne irgendeinen Zweck zu erfüllen. Du kannst sie ausfindig machen, indem du den Befehl „docker images“ mit dem Filterflag -f und dem Wert dangling=true verwendest. Sobald du die Dangling-Images identifiziert hast, kannst du sie mit dem Befehl „docker image prune“ entfernen. Es ist jedoch wichtig, dass du dir sicher bist, dass du sie löschen willst, bevor du diesen Befehl ausführst.

Um alle Dangling-Images aufzulisten, verwende diesen Befehl:

docker images -f dangling=true 

Der Output sieht in etwa so aus:

Um „Dandling Images“ zu löschen, nutze diesen Befehl:

docker [Image] prune 

Ersetze [Image] mit dem Namen des Images, das du entfernen willst.

Images nach einem bestimmten Muster löschen

Du kannst eine Kombination aus dem Befehl „docker images“ und grep verwenden, um alle Images zu finden, die einem bestimmten Muster entsprechen. Wenn du dir sicher bist, dass du diese Images löschen willst, kannst du das awk-Dienstprogramm verwenden, um ihre IDs an den Befehl „docker rmi“ zu übergeben. Bitte beachte, dass diese Dienstprogramme nicht von Docker bereitgestellt werden und möglicherweise nicht auf allen Betriebssystemen verfügbar sind.

Du kannst sie mit diesem Befehl auflisten:

docker images -a |  grep "pattern" 

Und sie mit diesem Befehl löschen:

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

Ersetze [pattern] durch das Muster, nach dem du suchen willst.

Alle Images löschen

Mit dem Befehl „docker images“ und dem Flag -a kannst du alle Docker-Images auf deinem System anzeigen. Wenn du alle diese Images löschen möchtest, kannst du den Flag -q hinzufügen, um die Image-ID an den Befehl „docker rmi“ zu übergeben.

Achte aber darauf, dass du wirklich alle Images löschen willst, bevor du diesen Befehl ausführst.

Um alle Images zu löschen, nutze diesen Befehl:

docker rmi $(docker images -a -q)

Container entfernen

Zu guter Letzt werden wir dir zeigen, wie du Docker-Container auf deinem System löschen kannst.

Spezifische Container löschen

Um die Container zu identifizieren, die du entfernen möchtest, verwende den Befehl „docker ps“ und füge die Option -a hinzu. Dadurch werden die Namen oder IDs aller Container auf dem System angezeigt, einschließlich derjenigen, die angehalten oder beendet wurden.

Um alle Container aufzulisten, nutze diesen Befehl:

docker ps –a 

Um nun einen spezifischen Container zu löschen, nutze diesen Befehl:

docker rm [CONTAINER-ID-OR-NAME] 

Container automatisch nach beenden löschen

Wenn du einen Container erstellst und weißt, dass du ihn nicht mehr brauchst, wenn er fertig ist, kannst du die Flagge „-rm“ in den Befehl „docker run“ einfügen. Dadurch wird sichergestellt, dass der Container automatisch entfernt wird, wenn er beendet wird.

Die Syntax würde wie folgt aussehen:

docker run --rm image_name 

Beendete Container entfernen

Wenn du nur die beendeten Container sehen willst, kannst du mit dem Flag -f nach ihrem Status filtern. Sobald du bestätigt hast, dass du diese Container entfernen willst, kannst du mit dem Flag -q ihre IDs an den Befehl „docker rm“ übergeben.

Um alle beendeten Container aufzulisten, verwende diesen Befehl:

docker ps -a -f status=exited 

Um nun alle beendeten Container zu löschen, nutze diesen Befehl:

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

Container mit Filtern löschen

Du kannst Docker-Filter kombinieren, indem du das Filter-Flag wiederholst und einen zusätzlichen Wert hinzufügst. Dadurch wird eine Liste von Containern erstellt, die eine der beiden Bedingungen erfüllen. Wenn du z.B. alle Container mit einem bestimmten Namen entfernen willst oder wenn er beendet wurde, kannst du zwei Filter verwenden.

Um sie aufzulisten, benutze diesen Befehl:

docker ps -a -f status=exited -f name=[Name] 

Um diese dann zu entfernen, nutze diesen Befehl:

docker rm $(docker ps -a -f status=exited -f name=[Name] -q) 

Container nach einem bestimmten Muster löschen

Mit einer Kombination aus „docker ps“ und „grep“ lassen sich alle Container ausfindig machen, die einem bestimmten Muster entsprechen. Sobald du sicher bist, dass du die richtige Liste der zu löschenden Container hast, kannst du „awk“ und „xargs“ verwenden, um die Container-ID an „docker rm“ zu übergeben. Es ist wichtig zu beachten, dass diese Dienstprogramme nicht von Docker bereitgestellt werden und möglicherweise nicht auf allen Systemen verfügbar sind.

Um sie aufzulisten, benutze diesen Befehl:

docker ps -a |  grep "pattern” 

Um sie zu löschen, nutze diesen Befehl:

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

Alle Container stoppen und löschen

Mit dem Befehl „docker ps“ kannst du die Container anzeigen, die derzeit auf deinem System laufen. Wenn du den Flag „-a“ hinzufügst, werden alle Container angezeigt, auch die, die nicht laufen. Wenn du dir sicher bist, dass du diese Container löschen willst, kannst du den Flag „-q“ hinzufügen, um ihre IDs an die Befehle „docker stop“ und „docker rm“ zu übergeben.

Um alle Container zu stoppen und zu löschen, nutze diesen Befehl:

docker stop $(docker ps -a -q) 
docker rm $(docker ps -a -q) 

Fazit

Herzlichen Glückwunsch! Jetzt kennst du einige der wichtigsten Befehle und Techniken, wenn es um die Verwaltung deiner Docker-Instanz geht, und weißt, wie du mit allem, was dazu gehört, umgehst.

Du kannst diesen Leitfaden als Spickzettel für später speichern!

Nach oben scrollen