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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow