Docker
Überprüfen eines laufenden Containers
Suche…
Syntax
- Docker inspizieren [OPTIONEN] CONTAINER | IMAGE [CONTAINER | IMAGE ...]
Containerinformationen abrufen
Um alle Informationen zu einem Container zu erhalten, können Sie Folgendes ausführen:
docker inspect <container>
Holen Sie sich bestimmte Informationen aus einem Container
Sie können bestimmte Informationen aus einem Container abrufen, indem Sie Folgendes ausführen:
docker inspect -f '<format>' <container>
Zum Beispiel können Sie die Netzwerkeinstellungen abrufen, indem Sie Folgendes ausführen:
docker inspect -f '{{ .NetworkSettings }}' <container>
Sie können auch nur die IP-Adresse erhalten:
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>
Der Parameter -f bedeutet formatiert und erhält eine Go-Vorlage als Eingabe, um das zu erwartende Format zu formatieren. Dies wird jedoch nicht zu einer schönen Rendite führen.
docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}
Das Json-Schlüsselwort gibt die Rückgabe als JSON zurück.
Zum Abschluss noch ein kleiner Tipp: Verwenden Sie Python, um die Ausgabe-JSON zu formatieren:
docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool
Und voila, Sie können alles auf dem Docker inspizieren abfragen und es in Ihrem Terminal schön aussehen lassen.
Es ist auch möglich, ein Dienstprogramm namens " jq " zu verwenden, um die docker inspect
Befehlsausgabe bei der Befehlsausgabe zu unterstützen.
docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]
Der obige Befehl gibt die folgende Ausgabe zurück:
[
"172.17.0.1"
]
Diese Ausgabe ist eigentlich eine Liste, die ein Element enthält. Manchmal zeigt die docker inspect
eine Liste mit mehreren Elementen an, und Sie möchten möglicherweise auf ein bestimmtes Element verweisen. Wenn Config.Env
beispielsweise mehrere Elemente enthält, können Sie mit index
auf das erste Element dieser Liste verweisen:
docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>
Das erste Element ist bei Null indiziert, das heißt, das zweite Element dieser Liste befindet sich am Index 1
:
docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>
Mit len
es möglich, die Anzahl der Elemente der Liste abzurufen:
docker inspect --format ‘{{ len .Config.Env }}’ <container>
Bei negativen Zahlen kann auf das letzte Element der Liste verwiesen werden:
docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>
Einige docker inspect
Informationen werden als Schlüsselwörterbuch bezeichnet: Wert, hier ist ein Auszug aus einem docker inspect
Inspect eines Jess / Spotify-Containers
"Config": { "Hostname": "8255f4804dde", "Domainname": "", "User": "spotify", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "DISPLAY=unix:0", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/home/spotify" ], "Cmd": [ "-stylesheet=/home/spotify/spotify-override.css" ], "Image": "jess/spotify", "Volumes": null, "WorkingDir": "/home/spotify", "Entrypoint": [ "spotify" ], "OnBuild": null, "Labels": {} },
also bekomme ich die Werte des ganzen Config-Abschnitts
docker inspect -f '{{.Config}}' 825
{8255f4804dde spotify false false false map[] false false false [DISPLAY=unix:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/spotify] [-stylesheet=/home/spotify/spotify-override.css] false jess/spotify map[] /home/spotify [spotify] false [] map[] }
aber auch ein einzelnes Feld, wie der Wert von Config.Image
docker inspect -f '{{index (.Config) "Image" }}' 825
jess/spotify
oder Config.Cmd
docker inspect -f '{{.Config.Cmd}}' 825
[-stylesheet=/home/spotify/spotify-override.css]
Überprüfen Sie ein Bild
Um ein Bild zu untersuchen, können Sie die Bild-ID oder den Bildnamen verwenden, der aus Repository und Tag besteht. Angenommen, Sie haben das CentOS 6-Basisbild:
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos6 cf2c3ece5e41 2 weeks ago 194.6 MB
In diesem Fall können Sie eine der folgenden Aktionen ausführen:
-
➜ ~ docker inspect cf2c3ece5e41
-
➜ ~ docker inspect centos:centos6
Beide Befehle geben Ihnen alle Informationen, die in einem JSON-Array verfügbar sind:
[
{
"Id": "sha256:cf2c3ece5e418fd063bfad5e7e8d083182195152f90aac3a5ca4dbfbf6a1fc2a",
"RepoTags": [
"centos:centos6"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-07-01T22:34:39.970264448Z",
"Container": "b355fe9a01a8f95072e4406763138c5ad9ca0a50dbb0ce07387ba905817d6702",
"ContainerConfig": {
"Hostname": "68a1f3cfce80",
"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": [
"/bin/sh",
"-c",
"#(nop) CMD [\"/bin/bash\"]"
],
"Image": "sha256:cdbcc7980b002dc19b4d5b6ac450993c478927f673339b4e6893647fe2158fa7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"build-date": "20160701",
"license": "GPLv2",
"name": "CentOS Base Image",
"vendor": "CentOS"
}
},
"DockerVersion": "1.10.3",
"Author": "https://github.com/CentOS/sig-cloud-instance-images",
"Config": {
"Hostname": "68a1f3cfce80",
"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": [
"/bin/bash"
],
"Image": "sha256:cdbcc7980b002dc19b4d5b6ac450993c478927f673339b4e6893647fe2158fa7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"build-date": "20160701",
"license": "GPLv2",
"name": "CentOS Base Image",
"vendor": "CentOS"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 194606575,
"VirtualSize": 194606575,
"GraphDriver": {
"Name": "aufs",
"Data": null
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:2714f4a6cdee9d4c987fef019608a4f61f1cda7ccf423aeb8d7d89f745c58b18"
]
}
}
]
Spezifische Informationen drucken
Docker inspect
Stützen Vorlagen gehen über die --format
Option. Dies ermöglicht eine bessere Integration in Skripts, ohne auf traditionelle Pipes / sed / grep-Tools zurückgreifen zu müssen.
Eine interne IP-Adresse des Containers drucken :
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084
Dies ist nützlich für den direkten Netzwerkzugriff der automatischen Konfiguration von Load-Balancer.
Drucken Sie eine Container- Init- PID :
docker inspect --format '{{ .State.Pid }}' 7786807d8084
Dies ist nützlich für tiefere Inspektionen mit /proc
oder Tools wie strace
.
Fortgeschrittene Formatierung :
docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084
Wird ausgegeben:
Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp
Debuggen der Containerprotokolle mit Docker inspect
docker inspect
Befehl docker inspect
kann zum Debuggen der Containerprotokolle verwendet werden.
Stdout und Stderr des Containers können überprüft werden, um den Container zu debuggen, dessen Position mithilfe von docker inspect
.
Befehl: docker inspect <container-id> | grep Source
Es gibt die Position der Container stdout und stderr an.
Stdout / stderr eines laufenden Containers untersuchen
docker logs --follow <containerid>
Dadurch wird die Ausgabe des laufenden Containers angepasst. Dies ist nützlich, wenn Sie auf dem Docker-Daemon keinen Protokolltreiber eingerichtet haben.