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!