Verwendung des docker image ls Befehls zum Auflisten und Filtern von Images

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 den Befehl docker images effektiv nutzen können, um Docker-Images auf Ihrem System aufzulisten und zu filtern. Sie beginnen damit, alle Top-Level-Images aufzulisten und erkunden dann, wie Sie Images nach spezifischem Namen und Tag anzeigen können.

Darüber hinaus werden Sie sich mit der Filterung von Images basierend auf ihrem "dangling"-Status (unerwünschte Images) und durch Anwendung von Labels beschäftigen. Abschließend lernen Sie, wie Sie das Ausgabeformat des docker images-Befehls mithilfe einer benutzerdefinierten Vorlage anpassen können, um die Informationen gezielter darzustellen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/ls -.-> lab-555157{{"Verwendung des docker image ls Befehls zum Auflisten und Filtern von Images"}} docker/pull -.-> lab-555157{{"Verwendung des docker image ls Befehls zum Auflisten und Filtern von Images"}} docker/images -.-> lab-555157{{"Verwendung des docker image ls Befehls zum Auflisten und Filtern von Images"}} docker/build -.-> lab-555157{{"Verwendung des docker image ls Befehls zum Auflisten und Filtern von Images"}} end

Alle Top-Level-Images auflisten

In diesem Schritt lernen Sie, wie Sie alle Top-Level Docker-Images auf Ihrem System auflisten können. Top-Level-Images sind die Images, die Sie explizit herunterladen (pull) oder erstellen (build). Es handelt sich nicht um Zwischenimages, die während des Build-Prozesses erzeugt werden.

Um alle Top-Level-Images aufzulisten, können Sie den Befehl docker images verwenden. Dieser Befehl zeigt eine Tabelle mit Informationen zu jedem Image an, einschließlich Repository, Tag, Image-ID, Erstellungszeit und Größe.

Lassen Sie uns versuchen, die Images aufzulisten. Da dies eine frische Umgebung ist, gibt es möglicherweise zunächst nicht viele Images. In einem späteren Schritt werden wir ein Image herunterladen.

Öffnen Sie Ihr Terminal im Verzeichnis ~/project und führen Sie folgenden Befehl aus:

docker images

Sie sollten eine ähnliche Ausgabe wie diese sehen (die genaue Ausgabe kann je nach vorhandenen Images variieren):

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE

Diese Ausgabe zeigt an, dass sich derzeit keine Top-Level-Images auf Ihrem System befinden.

Images nach Name und Tag auflisten

In diesem Schritt lernen Sie, wie Sie spezifische Docker-Images nach ihrem Namen und Tag auflisten können. Dies ist besonders nützlich, wenn Sie viele Images haben und ein bestimmtes suchen.

Der Befehl docker images ermöglicht es Ihnen, einen Repository-Namen und optional einen Tag anzugeben, um die Ausgabe zu filtern. Das Format lautet docker images [REPOSITORY[:TAG]].

Zuerst laden wir ein Image herunter, damit wir etwas zum Auflisten haben. Wir verwenden das hello-world-Image, ein sehr kleines Test-Image.

Führen Sie folgenden Befehl aus, um das hello-world-Image zu pullen:

docker pull hello-world

Sie sollten eine Ausgabe sehen, die den Download des Images bestätigt:

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Nachdem wir das hello-world-Image haben, listen wir es nun mit seinem Namen auf.

Führen Sie folgenden Befehl aus:

docker images hello-world

Die Ausgabe sollte nur das hello-world-Image anzeigen:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

Sie können auch einen spezifischen Tag angeben. Da wir den latest-Tag gepullt haben, listen wir das Image mit diesem Tag auf:

docker images hello-world:latest

Die Ausgabe ist identisch zum vorherigen Befehl, da latest der Standard-Tag ist:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    <image_id>     <created_time>   <size>

Wenn Sie ein nicht existierendes Image auflisten, erhalten Sie eine leere Ausgabe. Beispiel:

docker images non-existent-image

Ausgabe:

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE

Dies bestätigt, dass Sie Images nach Namen und Tag filtern können.

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.

Images nach Labels filtern

In diesem Schritt lernen Sie, wie Sie Docker-Images anhand von Labels filtern können. Labels sind Schlüssel-Wert-Paare, die Sie Docker-Objekten (einschließlich Images) zuweisen können. Sie sind nützlich zur Organisation und Identifizierung von Images.

Um Images nach Labels zu filtern, verwenden Sie das --filter-Flag mit dem Schlüssel label. Der Wert kann entweder ein einzelnes Label sein (label=<key>=<value>) oder nur der Label-Schlüssel (label=<key>), um Images mit diesem Label unabhängig vom Wert zu finden.

Zuerst erstellen wir ein neues Dockerfile mit Labels.

Erstellen Sie eine Datei namens Dockerfile.labeled im Verzeichnis ~/project mit folgendem Inhalt:

FROM alpine
LABEL maintainer="LabEx User"
LABEL version="1.0"
CMD ["echo", "Image with labels!"]

Dieses Dockerfile ähnelt dem vorherigen, enthält aber zwei LABEL-Anweisungen.

Nun bauen wir ein Image aus diesem Dockerfile und taggen es:

docker build -t labeled-image:latest -f Dockerfile.labeled .

Sie sollten eine Ausgabe sehen, die den Build-Prozess und das erfolgreiche Tagging bestätigt.

Listen wir nun alle Images auf, um das neue Image zu sehen:

docker images

In der Liste sollten Sie labeled-image zusammen mit den anderen Images sehen:

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <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 Images nach dem maintainer-Label. Wir suchen Images, bei denen das maintainer-Label den Wert "LabEx User" hat:

docker images --filter label=maintainer=LabEx User

Die Ausgabe sollte nur das labeled-image zeigen:

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>

Sie können auch nur nach dem Label-Schlüssel filtern, unabhängig vom Wert. Filtern wir nach Images mit dem version-Label:

docker images --filter label=version

Auch hier sollte nur das labeled-image erscheinen:

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
labeled-image   latest    <image_id>     <created_time>   <size>

Dies demonstriert, wie Sie Images mithilfe von Labels filtern können.

Ausgabe mit benutzerdefinierten Templates formatieren

In diesem Schritt lernen Sie, wie Sie die Ausgabe des docker images-Befehls mit einem benutzerdefinierten Template formatieren. Dies ist nützlich, wenn Sie spezifische Informationen über Images in einem maschinenlesbaren Format oder einem angepassten, menschenlesbaren Format extrahieren möchten.

Der docker images-Befehl unterstützt das Flag --format, mit dem Sie eine Go-Template-Vorlage angeben können, um die Ausgabe zu steuern. Sie können verschiedene Platzhalter im Template verwenden, um auf verschiedene Attribute des Images zuzugreifen.

Lassen Sie uns versuchen, die Ausgabe so zu formatieren, dass nur die Image-ID und der Repository-Name, getrennt durch einen Doppelpunkt, angezeigt werden.

Führen Sie folgenden Befehl aus:

docker images --format "{{.ID}}: {{.Repository}}"

Sie sollten eine Ausgabe ähnlich dieser sehen, die die Image-ID und das Repository für jedes Image auflistet:

<image_id>: hello-world
<new_image_id>: my-image
<old_image_id>: <none>
<image_id>: labeled-image

Beachten Sie, dass das Dangling-Image weiterhin <none> für das Repository anzeigt.

Sie können auch andere Attribute wie Tag und Größe einbeziehen. Formatieren wir die Ausgabe, um das Repository, den Tag und die Größe, getrennt durch Tabulatoren, anzuzeigen.

Führen Sie folgenden Befehl aus:

docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

Die Verwendung von table am Anfang des Format-Strings erzeugt eine tabellenähnliche Ausgabe mit Kopfzeilen.

Sie sollten eine Ausgabe ähnlich dieser sehen:

REPOSITORY          TAG                 SIZE
hello-world         latest              <size>
my-image            latest              <size>
<none>              <none>              <size>
labeled-image       latest              <size>

Eine Liste verfügbarer Platzhalter finden Sie in der Docker-Dokumentation für den docker images-Befehl. Einige gängige Platzhalter sind:

  • .ID: Image-ID
  • .Repository: Repository-Name des Images
  • .Tag: Image-Tag
  • .Created: Erstellungszeit des Images
  • .Size: Image-Größe
  • .Containers: Anzahl der Container, die das Image verwenden

Experimentieren Sie mit verschiedenen Templates, um zu sehen, wie Sie die Ausgabe anpassen können. Zum Beispiel, um die Image-ID und Erstellungszeit aufzulisten:

docker images --format "{{.ID}} created at {{.Created}}"

Dieser Schritt schließt das Lab zum Auflisten und Filtern von Docker-Images ab. Sie haben gelernt, wie Sie alle Images auflisten, nach Name, Tag, Dangling-Status und Labels filtern sowie die Ausgabe mit benutzerdefinierten Templates formatieren.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker images verwenden, um Docker-Images aufzulisten und zu filtern. Sie begannen damit, alle Top-Level-Images auf Ihrem System aufzulisten. Anschließend übten Sie das Auflisten spezifischer Images anhand ihres Namens und Tags, nachdem Sie das hello-world-Image heruntergeladen hatten.

Sie haben außerdem untersucht, wie Images basierend auf ihrem Dangling-Status und anhand spezifischer Labels gefiltert werden können. Abschließend lernten Sie, wie Sie das Ausgabeformat des docker images-Befehls mit einer benutzerdefinierten Vorlage anpassen können, um nur die benötigten Informationen anzuzeigen.