Images nach Dangling-Status filtern
In diesem Schritt lernen Sie, wie Sie Docker-Images nach ihrem "Dangling"-Status filtern können. Dangling-Images sind Image-Layer, die mit keinem getaggten Image in Verbindung stehen. Sie entstehen häufig beim Erstellen neuer Image-Versionen, wodurch die alten Layer ohne Tag zurückbleiben. Diese Dangling-Images belegen Speicherplatz und können bereinigt werden.
Um Images nach ihrem Dangling-Status zu filtern, können Sie das Flag --filter
mit dem Schlüssel dangling
verwenden. Der Wert kann true
sein (nur Dangling-Images anzeigen) oder false
(nur nicht-dangling Images anzeigen).
Zuerst erstellen wir ein Dangling-Image, indem wir ein neues Image bauen, das ein bestehendes ersetzt. Wir verwenden dafür ein einfaches Dockerfile.
Erstellen Sie eine Datei namens Dockerfile
im Verzeichnis ~/project
mit folgendem Inhalt:
FROM alpine
CMD ["echo", "Hello, world!"]
Dieses Dockerfile ist sehr einfach. Es verwendet das alpine
-Image als Basis und gibt "Hello, world!" aus, wenn ein Container daraus gestartet wird.
Nun bauen wir ein Image aus diesem Dockerfile und taggen es:
docker build -t my-image:latest .
Sie sollten eine Ausgabe sehen, die den Build-Prozess bestätigt:
[+] Building
...
Successfully built <image_id>
Successfully tagged my-image:latest
Jetzt modifizieren wir das Dockerfile leicht und bauen es erneut mit demselben Tag. Dadurch entsteht ein neues Image mit dem Tag my-image:latest
, während das vorherige Image mit diesem Tag zum Dangling-Image wird.
Bearbeiten Sie das Dockerfile
im Verzeichnis ~/project
und ändern Sie den Befehl:
FROM alpine
CMD ["echo", "Hello again!"]
Bauen Sie das Image erneut mit demselben Tag:
docker build -t my-image:latest .
Die Ausgabe ähnelt dem vorherigen Build, aber es wird eine neue Image-ID generiert. Das vorherige Image mit dem Tag my-image:latest
ist nun ein Dangling-Image.
Listen wir alle Images auf, um das Dangling-Image zu sehen:
docker images
Sie sehen möglicherweise ein Image mit <none>
in den Spalten REPOSITORY und TAG - dies ist ein Dangling-Image:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
<none> <none> <old_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Jetzt filtern wir die Anzeige, um nur Dangling-Images mit dem Flag --filter dangling=true
zu zeigen:
docker images --filter dangling=true
Die Ausgabe zeigt nur das Dangling-Image:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> <old_image_id> <created_time> <size>
Um nur nicht-dangling Images anzuzeigen, verwenden Sie --filter dangling=false
:
docker images --filter dangling=false
Diese Liste zeigt alle nicht-dangling Images:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Dies demonstriert, wie Sie Images nach ihrem Dangling-Status filtern können.