Wie man den Befehl docker image rm verwendet, um Images zu entfernen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie Docker-Images effektiv verwalten können, indem Sie den Befehl docker image rm verwenden. Wir beginnen damit, die vorhandenen Images auf Ihrem System aufzulisten, um zu verstehen, was Sie zur Verfügung haben.

Anschließend werden wir verschiedene Szenarien zum Entfernen von Images untersuchen, darunter das Versuch, ein Image mit mehreren Tags zu entfernen, das Entfernen eines Images anhand seines Tags, das Entfernen eines Images anhand seiner ID unter Verwendung der Force-Option und schließlich das Entfernen eines Images anhand seines Digests. Diese praktische Erfahrung wird Sie mit den erforderlichen Fähigkeiten ausstatten, um nicht verwendete oder unerwünschte Docker-Images aufzuräumen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/rmi("Remove Image") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/rmi -.-> lab-555161{{"Wie man den Befehl docker image rm verwendet, um Images zu entfernen"}} docker/images -.-> lab-555161{{"Wie man den Befehl docker image rm verwendet, um Images zu entfernen"}} end

Vorhandene Images auflisten

In diesem Schritt lernen wir, wie man die Docker-Images auflisten kann, die derzeit auf Ihrem System verfügbar sind. Docker-Images sind die Bausteine von Containern. Sie sind schreibgeschützte Vorlagen, die zum Erstellen von Containern verwendet werden.

Um die Images aufzulisten, können Sie den Befehl docker images verwenden. Dieser Befehl zeigt Ihnen eine Liste aller Images an, die Docker auf Ihrem Computer heruntergeladen oder erstellt hat.

Probieren wir es aus. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

docker images

Sie sollten eine Ausgabe ähnlich der folgenden sehen (die genauen Images und Details können je nachdem, was Sie zuvor mit Docker gemacht haben, variieren):

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    270000000000   2 weeks ago    77.8MB
hello-world   latest    d00000000000   2 months ago   13.3kB

Die Ausgabe liefert mehrere Informationen zu jedem Image:

  • REPOSITORY: Der Name des Images.
  • TAG: Eine bestimmte Version des Images. latest ist das Standard-Tag, wenn keines angegeben wird.
  • IMAGE ID: Die eindeutige Kennung des Images.
  • CREATED: Wie lange her das Image erstellt wurde.
  • SIZE: Die Größe des Images.

Das Verständnis der Images, die Sie haben, ist der erste Schritt bei der Verwaltung dieser. In den nächsten Schritten werden wir untersuchen, wie man Images entfernt.

Versuch, ein Image mit mehreren Tags zu entfernen

In diesem Schritt werden wir untersuchen, was passiert, wenn Sie versuchen, ein Docker-Image zu entfernen, auf das mehrere Tags mit derselben Image-ID verweisen. Dies ist ein häufiges Szenario, wenn Sie ein Image mit verschiedenen Versionen oder Namen taggen.

Zunächst laden wir ein Image herunter und geben ihm einen zusätzlichen Tag. Wir verwenden für dieses Beispiel das hello-world-Image. Wenn Sie es bereits haben, wird das Herunterladen sehr schnell sein.

docker pull hello-world

Jetzt fügen wir diesem Image einen weiteren Tag hinzu, indem wir den Befehl docker tag verwenden. Die Syntax lautet docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]. Wir werden das hello-world:latest-Image mit einem neuen Tag namens hello-world:mytag versehen.

docker tag hello-world:latest hello-world:mytag

Jetzt listen wir die Images erneut auf, um den neuen Tag zu sehen.

docker images

Sie sollten zwei Einträge für hello-world sehen, einen mit dem latest-Tag und einen mit dem mytag-Tag, aber beide werden dieselbe IMAGE ID haben.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    270000000000   2 weeks ago    77.8MB
hello-world   latest    d00000000000   2 months ago   13.3kB
hello-world   mytag     d00000000000   2 months ago   13.3kB

Jetzt versuchen wir, das Image unter Verwendung eines der Tags, beispielsweise hello-world:latest, mit dem Befehl docker rmi zu entfernen.

docker rmi hello-world:latest

Sie werden feststellen, dass Docker die Image-Daten selbst nicht tatsächlich entfernt. Stattdessen entfernt es das von Ihnen angegebene spezifische Tag. Die Ausgabe wird anzeigen, dass es "Untagged" (enttaggt) wurde.

Untagged: hello-world:latest

Wenn Sie die Images erneut auflisten, werden Sie feststellen, dass der Eintrag hello-world:latest verschwunden ist, aber der Eintrag hello-world:mytag (mit derselben IMAGE ID) immer noch existiert.

docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    270000000000   2 weeks ago    77.8MB
hello-world   mytag     d00000000000   2 months ago   13.3kB

Dies zeigt, dass wenn ein Image mehrere Tags hat, das Entfernen eines einzelnen Tags nur diese spezifische Referenz zu den Image-Daten entfernt. Die Image-Daten selbst werden nur entfernt, wenn das letzte auf sie verweisende Tag entfernt wird oder wenn Sie es explizit anhand seiner ID entfernen (was wir später behandeln werden).

Ein Image anhand des Tags entfernen

Im vorherigen Schritt haben wir gesehen, dass das Entfernen eines Tags nur das Image enttaggt, wenn andere Tags oder Container immer noch darauf verweisen. In diesem Schritt werden wir das letzte verbleibende Tag für das hello-world-Image entfernen, was dazu führen sollte, dass die Image-Daten entfernt werden.

Derzeit haben wir das hello-world-Image mit dem mytag-Tag. Lassen Sie uns dies durch Auflisten der Images bestätigen:

docker images

Sie sollten den Eintrag hello-world:mytag sehen.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    270000000000   2 weeks ago    77.8MB
hello-world   mytag     d00000000000   2 months ago   13.3kB

Jetzt entfernen wir das hello-world-Image unter Verwendung des mytag-Tags mit dem Befehl docker rmi:

docker rmi hello-world:mytag

Diesmal, da mytag das einzige Tag war, das auf diese Image-ID verwies, wird Docker sowohl das Tag als auch die zugrunde liegenden Image-Daten entfernen. Die Ausgabe wird anzeigen, dass es "Untagged" (enttaggt) und dann "Deleted" (gelöscht) wurde.

Untagged: hello-world:mytag
Deleted: sha256:d0000000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (mehr Deleted-Zeilen)

Lassen Sie uns die Images erneut auflisten, um zu bestätigen, dass das hello-world-Image verschwunden ist:

docker images

Das hello-world-Image sollte nicht mehr in der Liste erscheinen.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    270000000000   2 weeks ago    77.8MB

Dies zeigt die Standardmethode zum Entfernen eines Images, wenn es von keinem Container verwendet wird und nur ein Tag hat.

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.

Ein Image anhand des Digests entfernen

In diesem letzten Schritt werden wir lernen, wie man ein Docker-Image anhand seines Digests entfernt. Ein Image-Digest ist ein kryptografisch sicherer Bezeichner für den Inhalt des Images. Er identifiziert eindeutig die genauen Layer und die Konfiguration eines Images, unabhängig von seinen Tags.

Zunächst laden wir ein Image herunter, das wir anhand seines Digests entfernen können. In diesem Beispiel verwenden wir das alpine-Image.

docker pull alpine

Um den Digest des Images anzuzeigen, können Sie den Befehl docker images --digests verwenden.

docker images --digests

Suchen Sie das alpine-Image in der Ausgabe. Sie werden eine Spalte DIGEST sehen, deren Wert mit sha256: beginnt. Dies ist der Image-Digest.

REPOSITORY    TAG       DIGEST                                                                    IMAGE ID       CREATED        SIZE
ubuntu        latest    <none>                                                                    270000000000   2 weeks ago    77.8MB
alpine        latest    sha256:0000000000000000000000000000000000000000000000000000000000000000   000000000000   3 weeks ago    5.59MB

Um das Image anhand seines Digests zu entfernen, verwenden Sie den Befehl docker rmi, gefolgt vom Image-Namen und dem Digest im Format REPOSITORY@DIGEST. Ersetzen Sie YOUR_ALPINE_DIGEST durch den tatsächlichen Digest, den Sie in der vorherigen Ausgabe gefunden haben.

docker rmi alpine@YOUR_ALPINE_DIGEST

Die Ausgabe wird anzeigen, dass das Image gelöscht wurde.

Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (mehr Deleted-Zeilen)

Listen Sie die Images erneut auf, um zu bestätigen, dass das alpine-Image verschwunden ist.

docker images

Das alpine-Image sollte nicht mehr in der Liste erscheinen.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        latest    <none>                                                                    270000000000   2 weeks ago    77.8MB

Das Entfernen anhand des Digests ist die genaueste Methode, ein Image zu entfernen, da Sie so sicherstellen, dass Sie genau die Version des Images entfernen, die durch diesen Digest identifiziert wird.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Docker-Images mit den Befehlen docker images und docker rmi verwaltet. Wir haben begonnen, indem wir die vorhandenen Images aufgelistet haben, um deren Repository, Tag, ID, Erstellungszeit und Größe zu verstehen.

Anschließend haben wir den Prozess des Entfernens von Images untersucht. Wir haben versucht, ein Image mit mehreren Tags zu entfernen und beobachtet, dass docker rmi nur das angegebene Tag entfernt, nicht die zugrunde liegende Image-ID, wenn andere Tags immer noch darauf verweisen. Wir haben erfolgreich ein Image durch Angabe seines Tags entfernt und auch gezeigt, wie man ein Image anhand seiner ID entfernt, einschließlich der Verwendung der Erzwingungsoption (-f), wenn dies erforderlich ist. Schließlich haben wir gelernt, wie man ein Image anhand seines Digests entfernt, der einen eindeutigen und unveränderlichen Bezeichner für den Image-Inhalt liefert.