이재홍의 언제나 최신 Docker - Unit 13.14 inspect

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

Docker 명령어 및 옵션 목록

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

inspect

다음은 컨테이너와 이미지의 세부 정보를 JSON 형태로 출력하는 inspect 명령입니다.

docker inspect <옵션> <컨테이너 또는 이미지 이름, ID>
  • -f, --format="": 지정한 정보만 출력합니다. "{{ .NetworkSettings.IPAddress }}"처럼 .(점)으로 JSON 문서의 하위 항목을 설정할 수 있습니다.

다음 명령은 이미지의 세부 정보에서 아키텍처와 OS를 출력합니다.

$ sudo docker inspect -f "{{ .Architecture }} {{ .Os }}" ubuntu:latest
amd64 linux

다음 명령은 컨테이너의 IP 주소를 출력합니다.

$ sudo docker run -i -t -d --name hello ubuntu:latest /bin/bash
$ sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" hello
172.17.0.2

다음 명령은 세부 정보의 일부 내용을 JSON 형태로 출력합니다.

$ sudo docker inspect -f "{{json .NetworkSettings}}" hello
{"Bridge":"","SandboxID":"8944004411c70974d573578c5c799af21ab7d23dd4836134eeeff515003d8cc5","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Ports":{},"SandboxKey":"/var/run/docker/netns/8944004411c7","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"EndpointID":"535e6fd0c48ecc54d4cdc3b4745ebf435485326c7dc9b490bb2595e206c49db5","Gateway":"172.17.0.1","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","MacAddress":"02:42:ac:11:00:02","Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"86f2d8eff1ad8ffbf9404f150de8735943cf87692592cbf3073d47a88a2bd02d","EndpointID":"535e6fd0c48ecc54d4cdc3b4745ebf435485326c7dc9b490bb2595e206c49db5","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02","DriverOpts":null}}}

다음 명령은 컨테이너의 세부 정보에서 특정 부분만 추출하여 원하는 포맷으로 출력합니다.

$ sudo docker run -i -t -d --name hello -p 80:80 -p 8080:8080 ubuntu:latest /bin/bash
$ sudo docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' hello
 80/tcp -> 80  8080/tcp -> 8080

.NetworkSettings.Ports의 내용은 다음과 같습니다.

            "Ports": {
                "80/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "80"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "80"
                    }
                ],
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "8080"
                    }
                ]
            },

여기서 {{range $p, $conf := .NetworkSettings.Ports}}으로 .NetworkSettings.Ports의 내용을 순회하면서 $p, $conf에 대입합니다. 그리고 $p는 그대로 출력하고, $conf 배열에서 첫 번째 항목(**index $conf 0**)의 .HostPort를 출력합니다.

{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}

저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2022-10-03