Ein Image per ID unter Verwendung der Erzwingungsoption entfernen
In diesem Schritt werden wir lernen, wie man ein Docker-Image anhand seiner Image-ID entfernt und insbesondere, wie man die Erzwingungsoption (-f
oder --force
) bei Bedarf verwendet. Das Entfernen anhand der ID ist nützlich, wenn Sie genau wissen möchten, welches Image Sie entfernen, insbesondere wenn mehrere Tags auf dasselbe Image verweisen.
Zunächst laden wir ein Image herunter, das wir anschließend anhand seiner ID entfernen können. Wir verwenden das ubuntu
-Image. Wenn Sie es bereits haben, wird das Herunterladen schnell sein.
docker pull ubuntu
Jetzt listen wir die Images auf, um die Image-ID des ubuntu
-Images zu erhalten.
docker images
Suchen Sie das ubuntu
-Image in der Ausgabe und notieren Sie sich seine IMAGE ID
. Es handelt sich um eine lange Zeichenkette aus hexadezimalen Zeichen. Sie benötigen nur die ersten paar Zeichen (normalerweise 3 oder mehr), um das Image eindeutig zu identifizieren.
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 270000000000 2 weeks ago 77.8MB
Versuchen wir zunächst, das Image anhand seiner ID ohne die Erzwingungsoption zu entfernen. Ersetzen Sie YOUR_IMAGE_ID
durch die tatsächliche Image-ID, die Sie aus der Ausgabe von docker images
notiert haben.
docker rmi YOUR_IMAGE_ID
Wenn das Image von keinem laufenden oder angehaltenen Container verwendet wird, wird dieser Befehl wahrscheinlich erfolgreich sein und das Image entfernen. Wenn jedoch ein Container auf diesem Image basiert, erhalten Sie eine Fehlermeldung, die darauf hinweist, dass das Image von einem Container verwendet wird und nicht entfernt werden kann.
Um die Verwendung der Erzwingungsoption zu demonstrieren, lassen Sie uns zunächst einen Container auf Basis des ubuntu
-Images starten.
docker run -d ubuntu sleep 3600
Dieser Befehl startet einen Ubuntu-Container im detached-Modus (-d
) und lässt ihn für eine Stunde laufen (sleep 3600
).
Jetzt versuchen wir erneut, das ubuntu
-Image anhand seiner ID ohne die Erzwingungsoption zu entfernen.
docker rmi YOUR_IMAGE_ID
Sie sollten eine Fehlermeldung ähnlich der folgenden erhalten:
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - image is referenced by one or more containers: 000000000000 (created ...)
Dieser Fehler tritt auf, weil ein Container das Image verwendet. Um ein Image, das von einem Container verwendet wird, zu entfernen, müssen Sie die Erzwingungsoption (-f
) verwenden.
Jetzt entfernen wir das Image anhand seiner ID mit der Erzwingungsoption. Ersetzen Sie YOUR_IMAGE_ID
durch die tatsächliche Image-ID.
docker rmi -f YOUR_IMAGE_ID
Die Erzwingungsoption teilt Docker mit, das Image zu entfernen, auch wenn es von einem Container verwendet wird. Docker wird zunächst alle Container stoppen und entfernen, die das Image verwenden, und dann das Image selbst entfernen. Die Ausgabe wird anzeigen, dass das Image und seine Layer gelöscht wurden.
Untagged: ubuntu:latest
Deleted: sha256:2700000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (mehr Deleted-Zeilen)
Listen Sie die Images erneut auf, um zu bestätigen, dass das ubuntu
-Image verschwunden ist.
docker images
Das ubuntu
-Image sollte nicht mehr in der Liste erscheinen.
Die Verwendung der Erzwingungsoption sollte mit Vorsicht erfolgen, da sie Container ohne weitere Bestätigung stoppt und entfernt.