Docker
Inspekterar en löpande behållare
Sök…
Syntax
- docker inspektera [OPTIONS] CONTAINER | IMAGE [CONTAINER | IMAGE ...]
Få containerinformation
För att få all information för en container kan du köra:
docker inspect <container>
Få specifik information från en container
Du kan få en specifik information från en container genom att köra:
docker inspect -f '<format>' <container>
Till exempel kan du få nätverksinställningarna genom att köra:
docker inspect -f '{{ .NetworkSettings }}' <container>
Du kan också få bara IP-adressen:
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>
Parametern -f betyder format och kommer att få en Go-mall som ingång för att formatera vad som förväntas, men detta ger inte en vacker avkastning, så försök:
docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}
json-nyckelordet ger avkastningen som en JSON.
Så för att avsluta, är ett litet tips att använda python där för att formatera utgången JSON:
docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool
Och voila, du kan fråga vad som helst på dockningsinspektionen och få den att se snygg ut i din terminal.
Det är också möjligt att använda ett verktyg som heter " jq " för att hjälpa till att bearbeta docker inspect
kommandoutput.
docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]
Ovanstående kommando returnerar följande utgång:
[
"172.17.0.1"
]
Denna utgång är faktiskt en lista som innehåller ett element. Ibland docker inspect
en lista med flera element, och du kanske vill hänvisa till ett specifikt element. Om till exempel Config.Env
innehåller flera element kan du hänvisa till det första elementet i den här listan med hjälp av index
:
docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>
Det första elementet indexeras till noll, vilket innebär att det andra elementet i denna lista är på index 1
:
docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>
Med len
är det möjligt att få antalet element i listan:
docker inspect --format ‘{{ len .Config.Env }}’ <container>
Och med negativa siffror är det möjligt att hänvisa till det sista elementet i listan:
docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>
Vissa docker inspect
kommer som en ordlista med nyckel: värde, här är ett utdrag av en docker inspect
av en jess / spotify som kör behållare
"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": {} },
så jag får värdena för hela Config-avsnittet
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[] }
men också ett enda fält, som värdet på Config.Image
docker inspect -f '{{index (.Config) "Image" }}' 825
jess/spotify
eller Config.Cmd
docker inspect -f '{{.Config.Cmd}}' 825
[-stylesheet=/home/spotify/spotify-override.css]
Inspektera en bild
För att inspektera en bild kan du använda bild-ID eller bildnamn, bestående av arkiv och tagg. Säg, du har basbilden på CentOS 6:
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos6 cf2c3ece5e41 2 weeks ago 194.6 MB
I det här fallet kan du köra något av följande:
-
➜ ~ docker inspect cf2c3ece5e41
-
➜ ~ docker inspect centos:centos6
Båda dessa kommandon ger dig all information tillgänglig i en JSON-grupp:
[
{
"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"
]
}
}
]
Skriva ut specifik information
docker inspect
stöder Go mallar via --format
alternativ. Detta möjliggör bättre integrering i skript utan att använda traditionella verktyg för rör / sed / grep.
Skriv ut en intern IP-behållare :
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084
Detta är användbart för direkt nätverksåtkomst för autokonfiguration av lastbalanserare.
Skriv ut en behållare init PID :
docker inspect --format '{{ .State.Pid }}' 7786807d8084
Detta är användbart för djupare inspektion via /proc
eller verktyg som strace
.
Avancerad formulering :
docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084
Kommer att matas ut:
Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp
Felsöka behållarloggarna med dockningsinspekt
docker inspect
kommando kan användas för att felsöka behållarloggarna.
Containerns stdout och stderr kan kontrolleras för att felsöka behållaren, vars plats kan erhållas med docker inspect
.
Kommando: docker inspect <container-id> | grep Source
Det ger platsen för containrar stdout och stderr.
Undersöker stdout / stderr av en löpande behållare
docker logs --follow <containerid>
Detta slipper utgången från den löpande behållaren. Detta är användbart om du inte skapade en loggningsdrivrutin i dockningsdemonet.