수색…


통사론

  • docker inspect [옵션] 컨테이너 | 이미지 [컨테이너 | 이미지 ...]

컨테이너 정보 얻기

실행할 수있는 컨테이너에 대한 모든 정보를 얻으려면 다음과 같이하십시오.

docker inspect <container>

컨테이너에서 특정 정보 가져 오기

다음을 실행하여 컨테이너에서 특정 정보를 얻을 수 있습니다.

docker inspect -f '<format>' <container>

예를 들어 다음을 실행하여 네트워크 설정을 가져올 수 있습니다.

docker inspect -f '{{ .NetworkSettings }}' <container>

IP 주소를 얻을 수도 있습니다.

docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>

매개 변수 -f는 형식을 나타내며 예상대로 서식을 지정하기 위해 이동 서식 파일을 입력으로 받지만 아름다운 반환을 가져 오지는 않으므로 다음을 시도하십시오.

docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}

json 키워드는 JSON으로 반환합니다.

그래서 끝내기 위해, 약간의 팁은 출력 JSON을 포맷하기 위해 거기에 파이썬을 사용하는 것입니다 :

docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool

그리고, 당신은 항해자에 관한 무엇이든 조회 할 수 있고 그것을 당신의 터미널에서 예쁘게 보일 수 있습니다.

docker inspect 명령 출력 처리를 돕기 위해 " jq "라는 유틸리티를 사용할 수도 있습니다.

docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]

위의 명령은 다음과 같은 결과를 반환합니다 :

[
  "172.17.0.1"
]

이 출력은 실제로 하나의 요소를 포함하는 목록입니다. 때로는 docker inspect 여러 요소 목록을 표시하고 특정 요소를 참조 할 수 있습니다. 예를 들어 Config.Env 에 여러 요소가 포함되어있는 경우 index 사용하여이 목록의 첫 번째 요소를 참조 할 수 있습니다.

docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>

첫 번째 요소는 0으로 인덱싱됩니다. 즉,이 목록의 두 번째 요소는 인덱스 1 .

docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>

len 을 사용하면 목록의 요소 수를 얻을 수 있습니다.

docker inspect --format ‘{{ len .Config.Env }}’ <container>

음수를 사용하면 목록의 마지막 요소를 참조 할 수 있습니다.

docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>

일부 docker inspect 정보는 키 사전으로 제공됩니다. 값 : 여기서 jess의 docker inspect / 실행중인 컨테이너 확인

"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": {} },

그래서 나는 전체 Config 섹션의 값을 얻는다.

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[] }

뿐만 아니라 Config.Image의 값과 같은 단일 필드

docker inspect -f '{{index (.Config) "Image" }}' 825

jess/spotify

또는 Config.Cmd

docker inspect -f '{{.Config.Cmd}}' 825

[-stylesheet=/home/spotify/spotify-override.css]

이미지 검사

이미지를 검사하기 위해 리포지토리와 태그로 구성된 이미지 ID 또는 이미지 이름을 사용할 수 있습니다. 예를 들어 CentOS 6 기본 이미지가 있습니다.

➜  ~ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos6             cf2c3ece5e41        2 weeks ago         194.6 MB

이 경우 다음 중 하나를 실행할 수 있습니다.

  • ➜ ~ docker inspect cf2c3ece5e41
  • ➜ ~ docker inspect centos:centos6

이 두 명령 모두 JSON 배열에서 사용할 수있는 모든 정보를 제공합니다.

[
    {
        "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"
            ]
        }
    }
]

특정 정보 인쇄하기

docker inspect--format 옵션을 통해 Go Templates 를 지원 합니다 . 따라서 파이프 / sed / grep 전통적인 도구를 사용하지 않고도 스크립트에 더 잘 통합 할 수 있습니다.

컨테이너 내부 IP 인쇄 :

docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084

이는로드 밸런서 자동 구성의 직접 네트워크 액세스에 유용합니다.

컨테이너 초기화 PID :

docker inspect --format '{{ .State.Pid }}' 7786807d8084

이것은 /proc 또는 strace 와 같은 도구를 통한 더 자세한 검사에 유용합니다.

고급 포매팅 :

docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084

출력 :

Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp

docker inspect를 사용하여 컨테이너 로그 디버깅

docker inspect 명령을 사용하여 컨테이너 로그를 디버그 할 수 있습니다.

컨테이너의 stdout과 stderr를 점검하여 컨테이너를 디버그 할 수 있습니다. 컨테이너 위치는 docker inspect 통해 얻을 수 있습니다.

명령 : docker inspect <container-id> | grep Source

컨테이너의 위치를 ​​stdout 및 stderr로 제공합니다.

실행중인 컨테이너의 stdout / stderr 검사

docker logs --follow <containerid>

이것은 실행중인 컨테이너의 출력을 출력합니다. 이것은 docker 디먼에서 로깅 드라이버를 설정하지 않은 경우에 유용합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow