Docker ist eine bekannte Plattform, mit der Sie Ihre Anwendungen in Form von Containern verwalten und ausliefern können, die das Betriebssystem und abhängige Bibliotheken zusammen mit Ihrer Anwendung verpacken.
Wir werden uns mit der Verwaltung von Docker-Images befassen und dabei vor allem auf die Möglichkeiten eingehen, Docker-Bilder aufzulisten und die erforderlichen Informationen zu erhalten, um darauf aufbauend ein oder mehrere Bilder effizient zu entfernen
Fangen wir auch an
Auflisten von Docker-Bildern
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 vor 3 Wochen 133MB
hello-world latest d1165f221234 vor 4 Monaten 13.3kB
redis 4.0 191c4017dcdd vor 15 Monaten 89.3MB
abhisheknair@geekflare:~$
Wie andere Docker-Befehle
auch, unterstützt es den Befehl images
mit mehreren Optionen
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
Wenn Sie docker images
ohne Optionen ausführen, zeigt es Ihnen die Top-Level-Images wie docker image ls
, deren Repository und Tags sowie deren Größe auf der Festplatte an
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 vor 3 Wochen 133MB
hello-world latest d1165f221234 vor 4 Monaten 13.3kB
redis 4.0 191c4017dcdd vor 15 Monaten 89.3MB
abhisheknair@geekflare:~$
Diese Bilder haben Zwischenschichten, die die Benutzerfreundlichkeit erhöhen, den Erstellungsprozess beschleunigen und die Festplattenauslastung reduzieren, was im obigen Befehl nicht angezeigt wird. Die GRÖSSE
ist der kombinierte Speicherplatz, der das Image und alle seine übergeordneten Images aufnimmt. Wenn Sie den Inhalt des Abbilds als Tar-Datei speichern, wenn Sie ein Abbild mit Docker speichern
, entspricht dies 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 SIZE
nur einmal verwendet
Neueste Bilder auflisten
abhisheknair@geekflare:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c60d96bd2b77 Vor 10 Tagen 514MB
ubuntu latest c29284518f49 Vor 2 Wochen 72.8MB
nginx
latest 4cdc5dd7eaad vor 3 Wochen 133MB
hello-world latest d1165f221234 vor 4 Monaten 13.3kB
redis 4.0 191c4017dcdd vor 15 Monaten 89.3MB
abhisheknair@geekflare:~$
Bilder nach Repository und Tag auflisten
Um alle Bilder aufzulisten, die zu einem bestimmten Repository gehören, geben Sie den Namen des Repositorys 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 zusätzlich den Namen des Repositorys mit einem Tag angeben, um eine besser gefilterte Ausgabe zu erhalten.
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
abzuschneiden, 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 vor 10 Tagen 514MB
ubuntu latest sha256:c29284518f497b8c5f49933e74e43ca5221e69c8251e780427f7d12f716625ff vor 2 Wochen 72.8MB
nginx aktuell sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f 3 Wochen her 133MB
hello-world aktuell sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 4 Monate her 13.3kB
redis 4.0 sha256:191c4017dcdd3370f871a4c6e7e1d55c7d9abed2bebf3005fb3e7d12161262b8 15 Monate her 89.3MB
abhisheknair@geekflare:~$
Image Digests 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 vor 10 Tagen 514MB
ubuntu latest sha256:b3e2e47d016c08b3396b5ebe06ab0b711c34e7f37b98c9d37abe794b71cea0a2 c29284518f49 2 Wochen her 72.8MB
nginx latest sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 4cdc5dd7eaad Vor 3 Wochen 133MB
hello-world latest sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e d1165f221234 4 Monate her 13.3kB
redis 4.0 sha256:2e03fdd159f4a08d2165ca1c92adde438ae4e3e6b0f74322ce013a78ee81c88d 191c4017dcdd 15 Monate her 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 Befehl FROM
in einer Dockerdatei
Filtern der Ausgabe
der Docker-Befehl
unterstützt das Filtern von Images
mit der Flagge --filter
. Die derzeit unterstützten Filter sind
- baumelnd (boolescher Wert - wahr oder falsch)
- Etikett
(label=<key>
oderlabel=<key>=<value>)
- vor
(<Bildname>[:<Tag>]
,<Bild-ID>
oder<Bild@Digest>)
- filtert Bilder, die vor der angegebenen ID oder den Referenzen erstellt wurden - da (
<Bildname>[:<Tag>]
,<Bild-ID>
oder<Bild@Digest>)
- filtert Bilder, die seit der angegebenen ID oder Referenzen erstellt wurden - referenz (Muster einer Bildreferenz) - filtert Bilder, 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
aktuellste 4cdc5dd7eaad vor 3 Wochen 133MB
abhisheknair@geekflare:~$
Formatierung der Ausgabe
docker-Images
unterstützen die Formatierung von Ausgaben, die für die Verschachtelung mit anderen Befehlen, für Skripte oder für andere Zwecke benötigt werden. Dies sind die unterstützten Platzhalter für das --format
Flagge
Platzhalter | Beschreibung |
---|---|
.ID |
Bild-ID |
.repository |
Bild-Repository |
.Tag |
Bild-Tag |
.Digest |
Bild-Digest |
.CreatedSince |
Verstrichene Zeit seit der Erstellung des Bildes |
.CreatedAt |
Die Zeit, zu der das Bild erstellt wurde |
.Größe |
Größe des Image-Datenträgers |
Als Beispiel gibt der folgende Befehl die Ausgabe ohne Header aus und gibt die ID
und das Repository
getrennt durch einen 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 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 [OPTIONEN] IMAGE [IMAGE...]
Um ein einzelnes Bild zu entfernen, geben Sie einfach den Namen des Bildes an
abhisheknair@geekflare:~$ docker image rm redis
Unmarkiert: redis:latest
Unmarkiert: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
Gelöscht: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
Gelöscht: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
Gelöscht: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
Gelöscht: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
Gelöscht: 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
Gelöscht: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7
Gelöscht: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2
Gelöscht: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9
Gelöscht: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e
Gelöscht: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d
Gelöscht: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68
Untagged: mariadb:latest
Untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d
Gelöscht: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db
Gelöscht: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba
Gelöscht: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5
Gelöscht: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa
Gelöscht: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41
Gelöscht: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2
Gelöscht: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370
Gelöscht: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6
Gelöscht: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e
Gelöscht: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0
Deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144
abhisheknair@geekflare:~$
Entfernung erzwingen
Es kann sein, dass Container laufen, die die Images verwenden, die Sie zu löschen versuchen. In solchen Fällen wird Docker eine Warnung ausgeben, wenn Sie versuchen, ein referenziertes Image zu löschen.
abhisheknair@geekflare:~$ docker image rm nginx
Fehlerantwort vom Daemon: Konflikt: Repository-Referenz "nginx" kann nicht entfernt werden (muss erzwungen werden) - Container ce908eadf829 verwendet sein referenziertes Image 4cdc5dd7eaad
abhisheknair@geekflare:~$
Sie können zuerst den zugehörigen Container stoppen und es dann erneut versuchen, oder Sie verwenden die Option -f
, die das Entfernen des Bildes erzwingt (seien Sie vorsichtig)
abhisheknair@geekflare:~$ docker image rm nginx -f
Untagged: nginx:latest
Untagged: nginx@sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720
Gelöscht: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f
abhisheknair@geekflare:~$
Bilder stutzen
Es gibt bestimmte Situationen, in denen ungenutzte Bilder Speicherplatz verbrauchen oder Sie einfach nur alte, nicht mehr benötigte Bilder löschen müssen. Sie können solche unbenutzten Bilder mit Hilfe von
$ docker image prune
Beispiel
abhisheknair@geekflare:~$ docker image prune
WARNUNG! Dadurch werden alle nicht genutzten Images entfernt.
Sind Sie sicher, dass Sie fortfahren möchten? [y/N] y
Insgesamt wiedergewonnener Platz: 0B
abhisheknair@geekflare:~$
Wenn Sie auch alle Bilder bereinigen möchten, die von keinem Container verwendet werden, verwenden Sie die Option -a
abhisheknair@geekflare:~$ docker image prune -a
WARNUNG! Dadurch werden alle Images entfernt, denen nicht mindestens ein Container zugeordnet ist.
Sind Sie sicher, dass Sie fortfahren möchten? [y/N] y
Gelöschte Images:
untagged: mariadb:latest
untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d
gelöscht: 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
Insgesamt wiedergewonnener Platz: 445.2MB
abhisheknair@geekflare:~$
Sie können auch die Flagge --force
oder -f
verwenden, um mit der Bereinigung ohne Bestätigung fortzufahren, oder die Flagge --filter
verwenden, um den Befehl prune
Filterwerte (z.B. 'until=') zu übergeben
Beispiel
$ docker image prune -a --force --filter "until=2021-01-04T00:00:00"
Oder
$
docker image prune --filter="label=deprecated"
Befehl rmi verwenden
Sie können auch den Befehl rmi
mit Docker verwenden, um Images zu entfernen
Er entfernt (und hebt die Tags auf) ein oder mehrere Bilder aus dem Docker-Knoten. Wenn ein Bild über mehrere Tags verfügt, wird durch die Verwendung dieses Befehls mit dem Tag als Parameter nur das Tag entfernt. Wenn das Tag das einzige für das Bild ist, werden sowohl das Bild als auch das Tag entfernt
Mit diesem Befehl können Sie keine Bilder aus einer Registrierung entfernen. Außerdem können Sie ein Bild eines laufenden Containers nur dann entfernen, wenn Sie die Option -f
verwenden, wie beim Befehl docker image rm
Beispiel
abhisheknair@geekflare:~$ docker rmi alpine
Untagged: alpine:latest
Untagged: alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96
Gelöscht: sha256:d4ff818577bc193b309b355b02ebc9220427090057b54a59e73b79bdfe139b83
Deleted: sha256:72e830a4dff5f0d5225cdc0a320e85ab1ce06ea5673acfe8d83a7645cbd0e9cf
abhisheknair@geekflare:~$
Sie können auch --no-prune
verwenden, um anzugeben, dass nicht markierte Eltern nicht gelöscht werden sollen
Container stoppen und Bilder entfernen
Es kann vorkommen, dass Sie alle Container stoppen und alle zugehörigen Bilder entfernen müssen. Das können Sie ganz einfach tun mit
$ docker rm -vf $(docker ps -a -q)
Mit dem obigen Befehl werden alle laufenden Container gestoppt und zwangsweise entfernt. Anschließend können wir die verknüpften Bilder mit folgendem Befehl entfernen
$ docker rmi -f $(docker images -a -q)
Zusammenfassung
Docker ist ein vielseitiges Tool, das für DevOps-Ingenieure von heute unverzichtbar ist und Teil anderer aufregender Technologien wie Kubernetes ist. Die Verwaltung von Docker-Images ist einer der wichtigsten Bestandteile der Verwaltung und Fehlerbehebung einer Docker-Installation
Sie sollten nun eine grundlegende Vorstellung von den Möglichkeiten haben, die der Docker
CLI-Befehl 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 der fortgeschrittenen Nutzung helfen können
Verwenden Sie die Hilfe von docker [COMMAND]
, um weitere Details zu den verfügbaren Optionen und den zugehörigen Hilfethemen zu erhalten.