Verwendung des docker image inspect Befehls zur Anzeige von Image-Details

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 image inspect verwenden, um detaillierte Informationen über ein Docker-Image anzuzeigen. Sie beginnen mit dem Herunterladen eines Beispiel-Images. Anschließend untersuchen Sie, wie Sie das Image mit dem Standardausgabeformat, dem JSON-Format und einer benutzerdefinierten Go-Template (Go-Vorlage) inspizieren, um spezifische Details zu extrahieren. Diese praktische Übung vermittelt Ihnen die Fähigkeiten, die Eigenschaften und Konfiguration Ihrer Docker-Images effektiv zu untersuchen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/inspect -.-> lab-555155{{"Verwendung des docker image inspect Befehls zur Anzeige von Image-Details"}} docker/pull -.-> lab-555155{{"Verwendung des docker image inspect Befehls zur Anzeige von Image-Details"}} end

Ein Beispiel-Image herunterladen

In diesem Schritt lernen Sie, wie Sie ein Docker-Image aus einer Registry herunterladen. Docker-Images sind die Bausteine von Containern. Es handelt sich um schreibgeschützte Vorlagen, die den Anwendungscode, Bibliotheken, Abhängigkeiten und Konfigurationsdateien enthalten, die zum Ausführen einer Anwendung benötigt werden.

Um ein Image herunterzuladen, verwenden Sie den Befehl docker pull gefolgt vom Image-Namen. Wenn Sie keinen Tag angeben, lädt Docker standardmäßig den latest-Tag.

Lassen Sie uns das hello-world-Image herunterladen, ein sehr kleines Image, das verwendet wird, um zu testen, ob Docker korrekt installiert ist.

docker pull hello-world

Sie sollten eine ähnliche Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird:

Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Diese Ausgabe zeigt, dass Docker den latest-Tag des hello-world-Images aus der Docker Hub Registry (der Standard-Registry) herunterlädt. Die Zeilen mit Pull complete zeigen an, dass die verschiedenen Layer des Images heruntergeladen wurden.

Image im Standardformat untersuchen

In diesem Schritt lernen Sie, wie Sie ein Docker-Image untersuchen können, um detaillierte Informationen darüber anzuzeigen. Der Befehl docker inspect liefert umfangreiche Informationen über Docker-Objekte, einschließlich Images, Container, Netzwerke und Volumes. Standardmäßig gibt er die Informationen in einem strukturierten Format aus.

Um ein Image zu untersuchen, verwenden Sie den Befehl docker inspect gefolgt vom Image-Namen oder der Image-ID. Lassen Sie uns das hello-world-Image untersuchen, das Sie im vorherigen Schritt heruntergeladen haben.

docker inspect hello-world

Dieser Befehl gibt eine große Menge an Informationen über das hello-world-Image im Standardformat aus. Die Ausgabe enthält Details wie die Image-ID, Erstellungsdatum, Architektur, Betriebssystem und Konfiguration.

[
  {
    "Id": "sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591",
    "RepoTags": ["hello-world:latest"],
    "RepoDigests": [
      "hello-world@sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591"
    ],
    "Parent": "",
    "Comment": "",
    "Created": "2023-03-07T21:50:09.004511104Z",
    "Container": "a928b81f51a91111111111111111111111111111111111111111111111111111",
    "ContainerConfig": {
      "Hostname": "a928b81f51a9",
      "Domainname": "",
      "User": "",
      "AttachStdin": false,
      "AttachStdout": false,
      "AttachStderr": false,
      "Tty": false,
      "OpenStdin": false,
      "StdinOnce": false,
      "Env": [
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      ],
      "Cmd": ["/hello"],
      "Image": "sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591",
      "Volumes": null,
      "WorkingDir": "",
      "Entrypoint": null,
      "OnBuild": null,
      "Labels": {}
    },
    "DockerVersion": "20.10.21",
    "Author": "",
    "Config": {
      "Hostname": "",
      "Domainname": "",
      "User": "",
      "AttachStdin": false,
      "AttachStdout": false,
      "AttachStderr": false,
      "Tty": false,
      "OpenStdin": false,
      "StdinOnce": false,
      "Env": [
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      ],
      "Cmd": ["/hello"],
      "Image": "sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591",
      "Volumes": null,
      "WorkingDir": "",
      "Entrypoint": null,
      "OnBuild": null,
      "Labels": null
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 1330,
    "VirtualSize": 1330,
    "GraphDriver": {
      "Data": null,
      "Name": "overlay2"
    },
    "RootFS": {
      "Type": "layers",
      "Layers": [
        "sha256:2db29710123e5455b34e722505b562504b39e55355e344405b54d3153a94650b"
      ]
    },
    "Metadata": {
      "LastTagTime": "0001-01-01T00:00:00Z"
    }
  }
]

Diese Standardausgabe bietet einen umfassenden Überblick über die Konfiguration und Metadaten des Images. In den nächsten Schritten lernen Sie, wie Sie diese Ausgabe formatieren können, um spezifische Informationen zu extrahieren.

Image im JSON-Format untersuchen

Im vorherigen Schritt haben Sie das hello-world-Image untersucht und die Standardausgabe gesehen. Obwohl dieses Format informativ ist, kann es programmatisch schwer zu verarbeiten sein. Der inspect-Befehl von Docker ermöglicht es Ihnen, das Ausgabeformat mit dem Flag --format anzugeben. Ein gängiges und nützliches Format ist JSON.

Um ein Image zu untersuchen und die Ausgabe im JSON-Format zu erhalten, verwenden Sie das Flag --format json mit dem Befehl docker inspect.

Lassen Sie uns das hello-world-Image erneut untersuchen, diesmal jedoch mit JSON-formatierter Ausgabe.

docker inspect --format json hello-world

Dieser Befehl gibt die gleichen Informationen wie zuvor aus, jedoch als JSON-Array mit einem einzelnen JSON-Objekt formatiert.

[
  {
    "Id": "sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591",
    "RepoTags": ["hello-world:latest"],
    "RepoDigests": [
      "hello-world@sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591"
    ],
    "Parent": "",
    "Comment": "",
    "Created": "2023-03-07T21:50:09.004511104Z",
    "Container": "a928b81f51a91111111111111111111111111111111111111111111111111111",
    "ContainerConfig": {
      "Hostname": "a928b81f51a9",
      "Domainname": "",
      "User": "",
      "AttachStdin": false,
      "AttachStdout": false,
      "AttachStderr": false,
      "Tty": false,
      "OpenStdin": false,
      "StdinOnce": false,
      "Env": [
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      ],
      "Cmd": ["/hello"],
      "Image": "sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591",
      "Volumes": null,
      "WorkingDir": "",
      "Entrypoint": null,
      "OnBuild": null,
      "Labels": {}
    },
    "DockerVersion": "20.10.21",
    "Author": "",
    "Config": {
      "Hostname": "",
      "Domainname": "",
      "User": "",
      "AttachStdin": false,
      "AttachStdout": false,
      "AttachStderr": false,
      "Tty": false,
      "OpenStdin": false,
      "StdinOnce": false,
      "Env": [
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      ],
      "Cmd": ["/hello"],
      "Image": "sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591",
      "Volumes": null,
      "WorkingDir": "",
      "Entrypoint": null,
      "OnBuild": null,
      "Labels": null
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 1330,
    "VirtualSize": 1330,
    "GraphDriver": {
      "Data": null,
      "Name": "overlay2"
    },
    "RootFS": {
      "Type": "layers",
      "Layers": [
        "sha256:2db29710123e5455b34e722505b562504b39e55355e344405b54d3153a94650b"
      ]
    },
    "Metadata": {
      "LastTagTime": "0001-01-01T00:00:00Z"
    }
  }
]

Das JSON-Format ist besonders nützlich, wenn Sie die Ausgabe mit anderen Tools oder Skripten weiterverarbeiten möchten.

Image mit einer benutzerdefinierten Go-Template untersuchen

Zusätzlich zu den Standard- und JSON-Formaten ermöglicht der Befehl docker inspect die Verwendung einer Go-Template zur Formatierung der Ausgabe. Dies ist äußerst leistungsfähig, da es Ihnen erlaubt, spezifische Felder zu extrahieren und die Ausgabe genau nach Ihren Bedürfnissen zu formatieren.

Das Flag --format akzeptiert einen Go-Template-String. Sie können auf die Felder des untersuchten Objekts über die Punktnotation zugreifen. Zum Beispiel würden Sie .Id verwenden, um auf die Image-ID zuzugreifen. Für verschachtelte Felder können Sie die Punkte verketten, wie .Config.Cmd, um den Befehl zu erhalten, den der Container ausführen wird.

Lassen Sie uns das hello-world-Image untersuchen und die Image-ID sowie den auszuführenden Befehl extrahieren.

docker inspect --format 'ID: {{.Id}} Command: {{.Config.Cmd}}' hello-world

In diesem Befehl verwenden wir den Go-Template-String 'ID: {{.Id}} Command: {{.Config.Cmd}}'.

  • {{.Id}} greift auf das Feld Id des Image-Objekts zu.
  • {{.Config.Cmd}} greift auf das Feld Cmd innerhalb des Config-Objekts zu.

Die Ausgabe wird gemäß der Template formatiert:

ID: sha256:f5233545e4356188889db81cd1e163ee0d68e4b9b2863974888a98019dbf8591 Command: [/hello]

Sie können Go-Templates verwenden, um beliebige Informationen zu extrahieren, die in der standardmäßigen docker inspect-Ausgabe verfügbar sind. Dies ist besonders nützlich für Skripting und Automatisierungsaufgaben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie mit dem Befehl docker pull ein Docker-Image aus einer Registry herunterladen können, wobei das hello-world-Image als Beispiel diente. Anschließend haben Sie den Befehl docker inspect kennengelernt, um detaillierte Informationen über das heruntergeladene Image anzuzeigen.

Sie haben geübt, das Image mit dem Standardausgabeformat zu untersuchen, das einen umfassenden Überblick über die Eigenschaften des Images bietet. Die folgenden Schritte, die im bereitgestellten Inhalt nicht vollständig detailliert sind, würden wahrscheinlich die Formatierung der docker inspect-Ausgabe mittels JSON und benutzerdefinierten Go-Templates umfassen, um spezifische Informationen zu extrahieren. Dies verdeutlicht die Flexibilität des Befehls für die Analyse von Image-Details.