Wie kann ich Docker-Images auflisten und entfernen?

Veröffentlicht: 2021-08-03

Docker ist eine bekannte Plattform, mit der Sie Ihre Anwendungen als Container verwalten und versenden können, die das Betriebssystem und abhängige Bibliotheken zusammen mit Ihrer Anwendung zusammenpacken.

Wir werden uns mit der Verwaltung von Docker-Images befassen, hauptsächlich über die Möglichkeiten, Docker-Images aufzulisten und die erforderlichen Informationen zu erhalten, und dann darauf aufbauend lernen, ein oder mehrere Images auf effiziente Weise zu entfernen.

Also lasst uns anfangen.

Auflisten von Docker-Images

Um gezogene Docker-Images aufzulisten, verwenden Sie:

 abhisheknair@geekflare:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis latest aa4d65e670d6 9 days ago 105MB mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Wie bei anderen docker Befehlen unterstützt es den images mit mehreren Optionen.

 $ docker images [OPTIONS] [REPOSITORY[:TAG]]

Wenn Sie docker images ohne Optionen ausführen, werden Ihnen die Top-Level-Images wie docker image ls , ihr Repository und ihre Tags sowie ihre Größe auf der Festplatte angezeigt.

 abhisheknair@geekflare:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Diese Bilder haben Zwischenschichten, die die Benutzerfreundlichkeit erhöhen, den Erstellungsprozess beschleunigen und die Festplattennutzung reduzieren, was durch den obigen Befehl nicht angezeigt wird. Die SIZE ist der kombinierte Speicherplatz, der vom Bild und allen seinen übergeordneten Bildern eingenommen wird. Wenn Sie den Inhalt des Bildes als Tar-Datei speichern, wenn Sie ein Bild über das Dock save , entspricht es dieser aufgelisteten Größe.

Ein Bild wird mehrfach aufgelistet, wenn es mehrere Repository-Namen oder -Tags hat, obwohl das einzelne Bild, das durch seine IMAGE ID identifiziert wird, die aufgeführte SIZE nur einmal verbraucht.

Listen Sie die neuesten Bilder auf

 abhisheknair@geekflare:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Bilder nach Repository und Tag auflisten

Um alle Bilder aufzulisten, die zu einem bestimmten Repository gehören, geben Sie den Repository-Namen wie folgt an:

 abhisheknair@geekflare:~$ docker images redis REPOSITORY TAG IMAGE ID CREATED SIZE redis latest aa4d65e670d6 9 days ago 105MB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Sie können den Repository-Namen zusätzlich mit einem Tag für eine stärker gefilterte Ausgabe angeben:

 abhisheknair@geekflare:~$ docker images redis:4.0 REPOSITORY TAG IMAGE ID CREATED SIZE redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Bild-IDs in voller Länge auflisten

Um alle Bilder aufzulisten, ohne die IMAGE ID , verwenden Sie:

 abhisheknair@geekflare:~$ docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE redis latest sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 9 days ago 105MB mysql latest sha256:c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707 10 days ago 514MB ubuntu latest sha256:c29284518f497b8c5f49933e74e43ca5221e69c8251e780427f7d12f716625ff 2 weeks ago 72.8MB nginx latest sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f 3 weeks ago 133MB hello-world latest sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 4 months ago 13.3kB redis 4.0 sha256:191c4017dcdd3370f871a4c6e7e1d55c7d9abed2bebf3005fb3e7d12161262b8 15 months ago 89.3MB abhisheknair@geekflare:~$

Bildauszüge auflisten

Docker-Images, die das Format v2 oder höher verwenden, haben eine inhaltsadressierbare Kennung, die als digest bezeichnet wird. Um Image-Digest-Werte aufzulisten, verwenden Sie das Flag --digest wie folgt:

 abhisheknair@geekflare:~$ docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE redis latest sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 aa4d65e670d6 9 days ago 105MB mysql latest sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd c60d96bd2b77 10 days ago 514MB ubuntu latest sha256:b3e2e47d016c08b3396b5ebe06ab0b711c34e7f37b98c9d37abe794b71cea0a2 c29284518f49 2 weeks ago 72.8MB nginx latest sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e d1165f221234 4 months ago 13.3kB redis 4.0 sha256:2e03fdd159f4a08d2165ca1c92adde438ae4e3e6b0f74322ce013a78ee81c88d 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Mit einer 2.0 -Registrierung können Sie diese Digests mit den Befehlen push , pull , create , run und rmi verwenden. Dies funktioniert auch mit dem FROM -Befehl in einer Dockerfile .

Filtern der Ausgabe

Der docker -Befehl unterstützt das Filtern mit images mithilfe des Flags --filter . Die derzeit unterstützten Filter sind:

  • baumelnd (boolean – wahr oder falsch)
  • Bezeichnung ( label=<key> oder label=<key>=<value> )
  • before ( <image-name>[:<tag>] , <image id> or <image@digest> ) – Filtern Sie Bilder, die vor einer gegebenen ID oder Referenzen erstellt wurden
  • since ( <image-name>[:<tag>] , <image id> or <image@digest> ) – Filtern Sie Bilder, die seit der angegebenen ID oder den Referenzen erstellt wurden
  • Referenz (Muster einer Bildreferenz) – Bilder filtern, deren Referenz mit dem angegebenen Muster übereinstimmt

Außerdem können Sie mehrere Filter verwenden, indem Sie sie wie folgt kombinieren:

 $ docker images --filter "<key1>=<value1>" --filter"<key2>=<value2>"

Beispiel:

 abhisheknair@geekflare:~$ docker images --filter "before=redis" --filter "since=hello-world" REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB abhisheknair@geekflare:~$

Formatieren der Ausgabe

docker images unterstützen die Formatierung der Ausgabe, die möglicherweise für die Verschachtelung mit anderen Befehlen, Skripten oder anderem erforderlich ist. Dies sind die unterstützten Platzhalter für das Flag --format :

Platzhalter Beschreibung
.ID Bild-ID
.Repository Bildarchiv
.Tag Image-Tag
.Digest Bildauszug
.CreatedSince Verstrichene Zeit seit Erstellung des Bildes
.CreatedAt Die Zeit, zu der das Bild erstellt wurde
.Size Image-Festplattengröße

Als Beispiel druckt der folgende Befehl die Ausgabe ohne Header und gibt die ID und das Repository getrennt durch Doppelpunkt ( : ) für alle Bilder aus:

 abhisheknair@geekflare:~$ docker images --format "{{.ID}}: {{.Repository}}" aa4d65e670d6: redis c60d96bd2b77: mysql c29284518f49: ubuntu 4cdc5dd7eaad: nginx d1165f221234: hello-world 191c4017dcdd: redis abhisheknair@geekflare:~$

Oder um alle Bilder mit ihrem Repository und Tag in einem Tabellenformat aufzulisten, können Sie Folgendes verwenden:

 abhisheknair@geekflare:~$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" IMAGE ID REPOSITORY TAG aa4d65e670d6 redis latest c60d96bd2b77 mysql latest c29284518f49 ubuntu latest 4cdc5dd7eaad nginx latest d1165f221234 hello-world latest 191c4017dcdd redis 4.0 abhisheknair@geekflare:~$

Entfernen von Docker-Images

Um ein oder mehrere Docker-Images aus dem System zu entfernen, verwenden wir:

 $ docker image rm [OPTIONS] IMAGE [IMAGE...]

Um ein einzelnes Bild zu entfernen, geben Sie einfach den Bildnamen an:

 abhisheknair@geekflare:~$ docker image rm redis Untagged: redis:latest Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 abhisheknair@geekflare:~$

Oder um mehrere Bilder zu entfernen, geben Sie mehrere durch Leerzeichen getrennte Bildnamen an:

 abhisheknair@geekflare:~$ docker image rm redis mariadb Untagged: redis:latest Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 Untagged: mariadb:latest Untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d Deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db Deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba Deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5 Deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa Deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41 Deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2 Deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370 Deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6 Deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e Deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0 Deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144 abhisheknair@geekflare:~$

Entfernung erzwingen

Möglicherweise werden Container ausgeführt, die die Bilder verwenden, die Sie löschen möchten. In solchen Fällen gibt Docker eine Warnung aus, wenn Sie versuchen, ein referenziertes Image zu löschen.

 abhisheknair@geekflare:~$ docker image rm nginx Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container ce908eadf829 is using its referenced image 4cdc5dd7eaad abhisheknair@geekflare:~$

Sie können zuerst den zugehörigen Container stoppen und es dann erneut versuchen oder das Flag -f verwenden, das das Entfernen des Bildes erzwingt (seien Sie vorsichtig).

 abhisheknair@geekflare:~$ docker image rm nginx -f Untagged: nginx:latest Untagged: nginx@sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f abhisheknair@geekflare:~$

Bilder beschneiden

Es gibt bestimmte Situationen, in denen ungenutzte Bilder Speicherplatz verbrauchen oder Sie nur alte, baumelnde Bilder bereinigen müssen. Sie können solche unbenutzten Bilder bereinigen, indem Sie Folgendes verwenden:

 $ docker image prune

Beispiel:

 abhisheknair@geekflare:~$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B abhisheknair@geekflare:~$

Wenn Sie auch alle Bilder bereinigen möchten, die von keinem Container verwendet werden, verwenden Sie das Flag -a :

 abhisheknair@geekflare:~$ docker image prune -a WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y Deleted Images: untagged: mariadb:latest untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5 deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41 deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2 deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370 deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6 deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0 deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144 untagged: redis:latest untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 Total reclaimed space: 445.2MB abhisheknair@geekflare:~$

Sie können auch das --force oder -f verwenden, um ohne Bestätigung mit der Bereinigung fortzufahren, oder das Flag --filter verwenden, um Filterwerte (z. B. 'until=<timestamp>') für den Befehl prune bereitzustellen.

Beispiel:

 $ docker image prune -a --force --filter "until=2021-01-04T00:00:00"

Oder

 $ docker image prune --filter="label=deprecated"

Verwenden des rmi-Befehls

Sie können auch den Befehl rmi mit Docker verwenden, um Bilder zu entfernen.

Es entfernt (und entmarkiert) ein oder mehrere Bilder aus dem Docker-Knoten. Wenn ein Bild mehrere Tags hat, entfernt die Verwendung dieses Befehls mit dem Tag als Parameter nur das Tag. Wenn das Tag das einzige für das Bild ist, werden sowohl das Bild als auch das Tag entfernt.

Dieser Befehl entfernt keine Bilder aus einer Registrierung. Außerdem können Sie ein Image eines laufenden Containers nicht entfernen, es sei denn, Sie verwenden die Option -f wie beim Befehl docker image rm .

Beispiel:

 abhisheknair@geekflare:~$ docker rmi alpine Untagged: alpine:latest Untagged: alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96 Deleted: sha256:d4ff818577bc193b309b355b02ebc9220427090057b54a59e73b79bdfe139b83 Deleted: sha256:72e830a4dff5f0d5225cdc0a320e85ab1ce06ea5673acfe8d83a7645cbd0e9cf abhisheknair@geekflare:~$

Sie können auch --no-prune verwenden, um festzulegen, dass nicht gekennzeichnete Eltern nicht gelöscht werden sollen.

Beenden Sie Container und entfernen Sie Bilder

In vielen Fällen müssen Sie möglicherweise alle Container stoppen und alle zugehörigen Images entfernen. Das geht ganz einfach mit:

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

Der obige Befehl stoppt und entfernt alle laufenden Container zwangsweise. Dann können wir fortfahren, die verknüpften Bilder zu entfernen, indem wir Folgendes verwenden:

 $ docker rmi -f $(docker images -a -q)

Zusammenfassung

Docker ist ein vielseitiges Tool, das ein wesentlicher Bestandteil des Arsenals des heutigen DevOps-Ingenieurs und Teil anderer pulsierender Technologien wie Kubernetes ist. Die Docker-Image-Verwaltung ist einer der wesentlichen Bestandteile der Verwaltung und Fehlerbehebung einer Docker-Bereitstellung.

Sie sollten jetzt eine grundlegende Vorstellung von den Möglichkeiten haben, die der CLI-Befehl docker mit seinen Befehlen wie image , images und rmi bietet. Ihre Flags bieten weitere Anpassungsmöglichkeiten und bieten erweiterte Filter- und Anpassungsoptionen, die bei der Automatisierung und erweiterten Nutzung helfen können.

Verwenden Sie docker [COMMAND] help für weitere Details zu verfügbaren Optionen und verwandten Hilfethemen.