Docker
Een lopende container inspecteren
Zoeken…
Syntaxis
- docker inspecteert [OPTIES] CONTAINER | IMAGE [CONTAINER | IMAGE ...]
Ontvang containerinformatie
Om alle informatie voor een container te krijgen die u kunt uitvoeren:
docker inspect <container>
Krijg specifieke informatie uit een container
U kunt specifieke informatie uit een container halen door het volgende uit te voeren:
docker inspect -f '<format>' <container>
U kunt bijvoorbeeld de netwerkinstellingen verkrijgen door:
docker inspect -f '{{ .NetworkSettings }}' <container>
U kunt ook alleen het IP-adres krijgen:
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>
De parameter -f betekent formatteren en ontvangt een Go-sjabloon als invoer om te formatteren wat wordt verwacht, maar dit levert geen mooi rendement op, dus probeer:
docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}
het json trefwoord zal de terugkeer als een JSON brengen.
Dus om te eindigen, een kleine tip is om daar python te gebruiken om de output JSON te formatteren:
docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool
En voila, u kunt alles op de docker inspecteren en het er mooi uit laten zien in uw terminal.
Het is ook mogelijk om een hulpprogramma genaamd " jq " te gebruiken docker inspect
uitvoer van de docker inspect
te helpen verwerken.
docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]
De bovenstaande opdracht retourneert de volgende uitvoer:
[
"172.17.0.1"
]
Deze uitvoer is eigenlijk een lijst met één element. Soms geeft docker inspect
een lijst met verschillende elementen weer en wilt u misschien naar een specifiek element verwijzen. Als Config.Env
bijvoorbeeld meerdere elementen bevat, kunt u met behulp van index
naar het eerste element van deze lijst verwijzen:
docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>
Het eerste element wordt op nul geïndexeerd, wat betekent dat het tweede element van deze lijst op index 1
:
docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>
Met len
is het mogelijk om het aantal elementen van de lijst te krijgen:
docker inspect --format ‘{{ len .Config.Env }}’ <container>
En met behulp van negatieve getallen is het mogelijk om naar het laatste element van de lijst te verwijzen:
docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>
Sommige informatie van de docker inspect
komt als een sleutelwoordenboek: waarde, hier is een uittreksel van een docker inspect
een jess / spotify lopende container
"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": {} },
dus ik krijg de waarden van de hele Config-sectie
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[] }
maar ook een enkel veld, zoals de waarde van Config.Image
docker inspect -f '{{index (.Config) "Image" }}' 825
jess/spotify
of Config.Cmd
docker inspect -f '{{.Config.Cmd}}' 825
[-stylesheet=/home/spotify/spotify-override.css]
Inspecteer een afbeelding
Om een afbeelding te inspecteren, kunt u de afbeeldings-ID of de afbeeldingsnaam gebruiken, bestaande uit repository en tag. Stel, u hebt de CentOS 6-basisafbeelding:
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos6 cf2c3ece5e41 2 weeks ago 194.6 MB
In dit geval kunt u een van de volgende acties uitvoeren:
-
➜ ~ docker inspect cf2c3ece5e41
-
➜ ~ docker inspect centos:centos6
Beide opdrachten geven u alle informatie die beschikbaar is in een JSON-array:
[
{
"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"
]
}
}
]
Specifieke informatie afdrukken
docker inspect
ondersteunt Go-sjablonen via de optie --format
. Dit zorgt voor een betere integratie in scripts, zonder gebruik te maken van traditionele tools van pipes / sed / grep.
Druk een interne IP van een container af :
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084
Dit is handig voor directe netwerktoegang van de automatische configuratie van load-balancers.
Druk een container af init PID :
docker inspect --format '{{ .State.Pid }}' 7786807d8084
Dit is handig voor diepere inspectie via /proc
of tools zoals strace
.
Geavanceerd formatteren :
docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084
Zal uitvoeren:
Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp
Debuggen van de containerlogboeken met docker inspecteren
docker inspect
command kan worden gebruikt om de containerlogs te debuggen.
De stdout en stderr van de container kunnen worden gecontroleerd om de container te debuggen, waarvan de locatie kan worden verkregen met behulp van docker inspect
.
Command: docker inspect <container-id> | grep Source
Het geeft de locatie van containers stdout en stderr.
Stdout / stderr van een lopende container onderzoeken
docker logs --follow <containerid>
Dit volgt de output van de lopende container. Dit is handig als u geen logboekstuurprogramma hebt ingesteld voor de docker-daemon.