Поиск…


Синтаксис

  • докер проверяет [ОПЦИИ] КОНТЕЙНЕР | ИЗОБРАЖЕНИЕ [КОНТЕЙНЕР | ИЗОБРАЖЕНИЕ ...]

Получить информацию о контейнере

Чтобы получить всю информацию о контейнере, вы можете запустить:

docker inspect <container>

Получить конкретную информацию из контейнера

Вы можете получить определенную информацию из контейнера, выполнив:

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

Например, вы можете получить настройки сети, выполнив:

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

Вы также можете получить только IP-адрес:

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

Параметр -f означает формат и получит шаблон Go в качестве входных данных для форматирования ожидаемого, но это не принесет прекрасного результата, поэтому попробуйте:

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

ключевое слово json приведет к возврату как JSON.

Итак, чтобы закончить, небольшой совет - использовать там python для форматирования вывода JSON:

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

И вуаля, вы можете запросить что-нибудь на докер-инспекции и сделать ее красивой в вашем терминале.

Также можно использовать утилиту под названием « jq », чтобы помочь обработать вывод команды docker inspect докеров .

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>

Первый элемент индексируется в нуле, что означает, что второй элемент этого списка имеет индекс 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 информацию, поступают в виде словаря ключа: значение, вот выдержка docker inspect в контейнере jess / spotify

"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]

Проверьте изображение

Чтобы проверить изображение, вы можете использовать идентификатор изображения или имя изображения, состоящее из репозитория и тега. Скажем, у вас есть базовое изображение 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 поддерживает шаблоны Go с помощью опции --format . Это позволяет лучше интегрировать скрипты, не прибегая к традиционным инструментам pipe / sed / grep.

Распечатайте внутренний контейнер контейнера :

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

Это полезно для прямого сетевого доступа к автоматической настройке балансировщика нагрузки.

Печать контейнера init 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 может использоваться для отладки журналов контейнера.

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