Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten

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 inspect effektiv nutzen können, um detaillierte Informationen über Docker-Objekte abzurufen, wobei der Schwerpunkt insbesondere auf Containern liegt. Sie beginnen damit, einen Container zu untersuchen und das umfassende Standard-JSON-Ausgabeformat zu verstehen, das der Befehl liefert.

Basierend auf diesem Wissen werden Sie dann untersuchen, wie Sie die Ausgabe mithilfe von Go-Templates formatieren können, um bestimmte Datenpunkte wie die IP-Adresse eines Containers zu extrahieren. Das Lab behandelt auch, wie Sie die Größe eines Containers untersuchen können und zeigt, wie Sie verschiedene Arten von Docker-Objekten außer Containern untersuchen können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} docker/ps -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} docker/inspect -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} docker/pull -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} docker/images -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} docker/volume -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} docker/network -.-> lab-555165{{"Wie man den docker inspect-Befehl verwendet, um detaillierte Informationen zu erhalten"}} end

Einen Container untersuchen und das Standard-Ausgabeformat verstehen

In diesem Schritt lernen Sie, wie Sie einen Docker-Container untersuchen und das Standard-Ausgabeformat verstehen. Der Befehl docker inspect liefert detaillierte Informationen über Docker-Objekte, darunter Container, Images, Netzwerke und Volumes. Standardmäßig gibt er ein JSON-Array zurück, das Konfigurationsdetails, den Status und andere Metadaten enthält.

Zunächst laden wir ein einfaches Image herunter, mit dem wir arbeiten können. Wir verwenden das hello-world-Image.

docker pull hello-world

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen und extrahiert wird.

Jetzt lassen wir einen Container aus diesem Image ausführen.

docker run hello-world

Dieser Befehl führt den hello-world-Container aus, der eine Nachricht ausgibt und dann beendet wird.

Um den gerade ausgeführten Container zu untersuchen, benötigen Sie seine ID oder seinen Namen. Sie können die ID des zuletzt beendeten Containers mit docker ps -a finden.

docker ps -a

Suchen Sie den Container mit dem hello-world-Image und kopieren Sie seine CONTAINER ID.

Jetzt verwenden Sie den Befehl docker inspect gefolgt von der Container-ID, die Sie gerade kopiert haben. Ersetzen Sie <container_id> durch die tatsächliche ID.

docker inspect <container_id>

Dieser Befehl gibt ein großes JSON-Dokument aus, das detaillierte Informationen über den Container enthält. Diese Standard-Ausgabe umfasst eine Vielzahl von Daten, wie z. B. den Status des Containers, die Konfiguration, die Netzwerkeinstellungen und die eingebundenen Volumes. Das Verständnis dieser Ausgabe ist für das Debugging und die Verwaltung von Containern von entscheidender Bedeutung.

Scrollen Sie durch die Ausgabe, um einen Überblick über die verfügbaren Informationen zu erhalten. Sie werden Felder wie Id, State, Created, Path, Args, Config, NetworkSettings und viele andere sehen.

Die Ausgabe formatieren, um spezifische Informationen zu erhalten

Im vorherigen Schritt haben Sie gesehen, dass docker inspect eine große Menge an Informationen im JSON-Format liefert. Oft benötigen Sie nur bestimmte Informationen. Docker ermöglicht es Ihnen, die Ausgabe mithilfe der Option --format und Go-Templates zu formatieren.

Holien wir uns die IP-Adresse eines laufenden Containers. Zunächst benötigen wir einen laufenden Container. Wir verwenden dafür einen einfachen nginx-Container.

Laden Sie das nginx-Image herunter:

docker pull nginx

Führen Sie einen nginx-Container im detached-Modus (-d) aus, damit er im Hintergrund läuft:

docker run -d nginx

Dieser Befehl gibt die Container-ID aus. Kopieren Sie diese ID.

Jetzt verwenden wir docker inspect mit der Option --format, um die IP-Adresse des Containers zu erhalten. Ersetzen Sie <container_id> durch die ID Ihres laufenden nginx-Containers.

docker inspect --format='{{.NetworkSettings.IPAddress}}' <container_id>

Die Option --format verwendet die Go-Template-Syntax. . bezieht sich auf das JSON-Objekt der obersten Ebene. Wir navigieren durch die JSON-Struktur mithilfe der Punktnotation: .NetworkSettings greift auf das NetworkSettings-Objekt zu, und .IPAddress greift auf das IPAddress-Feld innerhalb von NetworkSettings zu. Die doppelten geschweiften Klammern {{ }} kennzeichnen eine Go-Template-Aktion.

Sie sollten die IP-Adresse des Containers in der Konsole sehen.

Sie können auf ähnliche Weise andere Informationen extrahieren. Beispielsweise, um den Status des Containers zu erhalten:

docker inspect --format='{{.State.Status}}' <container_id>

Dies gibt den aktuellen Status des Containers aus (z. B. "running").

Um den Namen des Containers zu erhalten:

docker inspect --format='{{.Name}}' <container_id>

Dies gibt den Namen des Containers aus (z. B. /vigilant_goldberg).

Sie können auch mehrere Felder in der Formatzeichenfolge kombinieren. Beispielsweise, um die Container-ID und ihren Status zu erhalten:

docker inspect --format='ID: {{.Id}}, Status: {{.State.Status}}' <container_id>

Dies gibt die ID und den Status in einem lesbareren Format aus.

Experimentieren Sie mit verschiedenen Feldern aus der JSON-Ausgabe, die Sie im vorherigen Schritt gesehen haben, um die benötigten Informationen zu extrahieren.

Die Größe eines Containers untersuchen

In diesem Schritt lernen Sie, wie Sie die Größe eines Docker-Containers untersuchen. Das Verständnis der Containergröße ist wichtig für die Verwaltung des Datenträgerplatzes und die Optimierung von Image-Builds.

Der Befehl docker inspect kann Informationen über die Größe des Containers liefern, aber ein direkterer Weg, die Größe laufender Container zu sehen, ist die Verwendung des Befehls docker ps mit der Option --size.

Stellen Sie zunächst sicher, dass Sie einen laufenden Container haben. Wenn Ihr nginx-Container aus dem vorherigen Schritt noch läuft, können Sie diesen verwenden. Wenn nicht, starten Sie ihn erneut:

docker run -d nginx

Jetzt listen Sie die laufenden Container auf und geben Sie auch ihre Größeninformationen aus:

docker ps --size

Sie werden eine zusätzliche Spalte mit der Bezeichnung SIZE sehen. Diese Spalte zeigt zwei Werte an: die virtuelle Größe und die Größe auf dem Datenträger.

  • Virtuelle Größe: Dies ist die Gesamtgröße der Image-Layer des Containers plus die Größe der schreibbaren Ebene des Containers.
  • Größe: Dies ist die Größe der schreibbaren Ebene des Containers auf dem Datenträger. Diese Ebene enthält alle Änderungen, die am Dateisystem des Containers seit seinem Start vorgenommen wurden.

Für Container, die beendet wurden, können Sie docker ps -a --size verwenden, um ihre Größen zu sehen.

docker ps -a --size

Sie können auch Größeninformationen mithilfe von docker inspect und der Formatierung der Ausgabe erhalten. Die Größeninformationen sind unter .SizeRw (Größe der schreibbaren Ebene) und .SizeRootFs (Gesamtgröße einschließlich der Image-Layer) verfügbar.

Ersetzen Sie <container_id> durch die ID eines Ihrer Container:

docker inspect --format='Writable Layer Size: {{.SizeRw}}, Total Size: {{.SizeRootFs}}' <container_id>

Dieser Befehl gibt die Größe der schreibbaren Ebene und die Gesamtgröße des Root-Dateisystems des Containers aus.

Das Verständnis des Unterschieds zwischen der virtuellen Größe und der Größe auf dem Datenträger ist wichtig. Die virtuelle Größe umfasst die geteilten Image-Layer, während die Größe auf dem Datenträger für einen laufenden Container hauptsächlich die eindeutigen Daten widerspiegelt, die auf die schreibbare Ebene dieses bestimmten Containers geschrieben wurden.

Einen bestimmten Objekttyp untersuchen

In den vorherigen Schritten haben Sie docker inspect für Container verwendet. Allerdings ist docker inspect ein vielseitiger Befehl, der zur Untersuchung verschiedener Docker-Objekte verwendet werden kann, darunter Images, Netzwerke und Volumes.

Um ein Objekt außer einem Container zu untersuchen, müssen Sie den Objekttyp vor dem Namen oder der ID des Objekts angeben. Die Syntax lautet docker inspect <object_type> <object_name_or_id>.

Lassen Sie uns das nginx-Image untersuchen, das Sie zuvor heruntergeladen haben.

Zunächst listen Sie Ihre Images auf, um die Image-ID oder den Namen zu erhalten:

docker images

Suchen Sie das nginx-Image und notieren Sie seinen REPOSITORY, TAG oder die IMAGE ID.

Jetzt untersuchen Sie das nginx-Image. Sie können den Image-Namen und das Tag (z. B. nginx:latest) oder die Image-ID verwenden. Ersetzen Sie <image_name_or_id> durch den entsprechenden Wert.

docker inspect image <image_name_or_id>

Dies gibt detaillierte Informationen über das nginx-Image aus, einschließlich seiner Layer, Konfiguration und Metadaten. Beachten Sie, dass die Struktur der Ausgabe sich von der Untersuchung eines Containers unterscheidet, da sie die Eigenschaften eines Images widerspiegelt.

Als Nächstes lassen Sie uns ein Docker-Netzwerk untersuchen. Docker erstellt Standardnetzwerke. Sie können sie mit docker network ls auflisten.

docker network ls

Sie werden wahrscheinlich Netzwerke wie bridge, host und none sehen. Lassen Sie uns das bridge-Netzwerk untersuchen.

docker inspect network bridge

Dieser Befehl zeigt Details über das bridge-Netzwerk an, einschließlich seiner Konfiguration, der verbundenen Container und der IP-Adressierungsinformationen.

Schließlich lassen Sie uns ein Docker-Volume untersuchen. Wenn Sie keine Volumes haben, können Sie eines erstellen.

docker volume create myvolume

Jetzt untersuchen Sie das Volume, das Sie gerade erstellt haben.

docker inspect volume myvolume

Dies zeigt Informationen über das myvolume an, wie z. B. seinen Treiber, den Mount-Point und den Geltungsbereich.

Indem Sie den Objekttyp (container, image, network, volume usw.) angeben, können Sie docker inspect verwenden, um detaillierte Informationen über verschiedene Komponenten Ihrer Docker-Umgebung zu erhalten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den docker inspect-Befehl verwenden, um detaillierte Informationen über Docker-Container zu erhalten. Sie haben begonnen, indem Sie einen Container untersucht und die umfassende Standard-JSON-Ausgabe verstanden haben, die eine Vielzahl von Konfigurations- und Statusdetails liefert.

Anschließend haben Sie untersucht, wie Sie die Ausgabe mithilfe der --format-Option und Go-Templating formatieren können, um spezifische Informationen wie die IP-Adresse eines Containers zu extrahieren. Dies zeigt die Flexibilität von docker inspect bei der Anpassung der Ausgabe an Ihre Bedürfnisse.