Как использовать команду docker inspect для получения подробной информации

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы научитесь эффективно использовать команду docker inspect для получения подробной информации о объектах Docker, в частности о контейнерах. Вы начнете с проверки контейнера и изучения полного стандартного вывода в формате JSON, предоставляемого этой командой.

На основе этого вы затем узнаете, как форматировать вывод с использованием шаблонов Go для извлечения определенных данных, например, IP-адреса контейнера. В лабораторном занятии также будет рассмотрено, как проверить размер контейнера, и продемонстрировано, как проверять различные типы объектов Docker, не только контейнеры.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/run -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} docker/ps -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} docker/inspect -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} docker/pull -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} docker/images -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} docker/volume -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} docker/network -.-> lab-555165{{"Как использовать команду docker inspect для получения подробной информации"}} end

Проверка контейнера и анализ стандартного вывода

На этом этапе вы научитесь проверять Docker-контейнер и понимать стандартный вывод. Команда docker inspect предоставляет подробную информацию об объектах Docker, включая контейнеры, образы, сети и тома. По умолчанию она возвращает JSON-массив, содержащий детали конфигурации, состояние и другие метаданные.

Сначала давайте загрузим простой образ для работы. Мы будем использовать образ hello-world.

docker pull hello-world

Вы должны увидеть вывод, указывающий на то, что образ загружается и извлекается.

Теперь давайте запустим контейнер из этого образа.

docker run hello-world

Эта команда запускает контейнер hello-world, который выводит сообщение и затем завершает работу.

Для проверки только что запущенного контейнера вам нужен его идентификатор (ID) или имя. Вы можете найти идентификатор последнего завершившего работу контейнера с помощью команды docker ps -a.

docker ps -a

Найдите контейнер с образом hello-world и скопируйте его идентификатор (CONTAINER ID).

Теперь используйте команду docker inspect, за которой следует идентификатор контейнера, который вы только что скопировали. Замените <container_id> на фактический идентификатор.

docker inspect <container_id>

Эта команда выведет большой JSON-документ, содержащий подробную информацию о контейнере. Этот стандартный вывод включает в себя широкий спектр данных, таких как состояние контейнера, конфигурация, настройки сети и смонтированные тома. Понимание этого вывода является важным аспектом отладки и управления контейнерами.

Прокрутите вывод, чтобы понять, какую информацию можно получить. Вы увидите поля, такие как Id, State, Created, Path, Args, Config, NetworkSettings и многие другие.

Форматирование вывода для получения конкретной информации

На предыдущем этапе вы увидели, что команда docker inspect предоставляет большое количество информации в формате JSON. Часто вам нужна только определенная часть этой информации. Docker позволяет форматировать вывод с помощью флага --format и шаблонов Go.

Давайте получим IP-адрес работающего контейнера. Сначала нам нужен работающий контейнер. Для этого мы будем использовать простой контейнер nginx.

Загрузите образ nginx:

docker pull nginx

Запустите контейнер nginx в фоновом режиме (-d), чтобы он работал в фоне:

docker run -d nginx

Эта команда выведет идентификатор контейнера. Скопируйте этот идентификатор.

Теперь давайте используем команду docker inspect с флагом --format для получения IP-адреса контейнера. Замените <container_id> на идентификатор вашего работающего контейнера nginx.

docker inspect --format='{{.NetworkSettings.IPAddress}}' <container_id>

Флаг --format использует синтаксис шаблонов Go. . обозначает корневой JSON-объект. Мы перемещаемся по структуре JSON с помощью точечной нотации: .NetworkSettings обращается к объекту NetworkSettings, а .IPAddress обращается к полю IPAddress внутри NetworkSettings. Двойные фигурные скобки {{ }} обозначают действие шаблона Go.

Вы должны увидеть IP-адрес контейнера, выведенный в консоль.

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

docker inspect --format='{{.State.Status}}' <container_id>

Это выведет текущий статус контейнера (например, "running" - запущен).

Чтобы получить имя контейнера:

docker inspect --format='{{.Name}}' <container_id>

Это выведет имя контейнера (например, /vigilant_goldberg).

Вы также можете комбинировать несколько полей в строке форматирования. Например, чтобы получить идентификатор контейнера и его статус:

docker inspect --format='ID: {{.Id}}, Status: {{.State.Status}}' <container_id>

Это выведет идентификатор и статус в более удобочитаемом формате.

Попробуйте использовать разные поля из JSON-вывода, который вы видели на предыдущем этапе, чтобы извлечь нужную вам информацию.

Проверка размера контейнера

На этом этапе вы научитесь проверять размер Docker-контейнера. Понимание размера контейнера важно для управления дисковым пространством и оптимизации сборки образов.

Команда docker inspect может предоставить информацию о размере контейнера, но более прямой способ узнать размер работающих контейнеров - использовать команду docker ps с флагом --size.

Сначала убедитесь, что у вас есть работающий контейнер. Если контейнер nginx с предыдущего этапа все еще запущен, вы можете использовать его. Если нет, запустите его снова:

docker run -d nginx

Теперь выведите список работающих контейнеров и включите информацию о их размере:

docker ps --size

Вы увидите дополнительный столбец с заголовком SIZE. Этот столбец показывает два значения: виртуальный размер и размер на диске.

  • Виртуальный размер: Это общий размер слоев образа контейнера плюс размер записываемого слоя контейнера.
  • Размер на диске: Это размер записываемого слоя контейнера на диске. Этот слой содержит все изменения, внесенные в файловую систему контейнера с момента его запуска.

Для контейнеров, которые завершили работу, вы можете использовать команду docker ps -a --size, чтобы увидеть их размеры.

docker ps -a --size

Вы также можете получить информацию о размере с помощью команды docker inspect и форматирования вывода. Информация о размере доступна в полях .SizeRw (размер записываемого слоя) и .SizeRootFs (общий размер, включая слои образа).

Замените <container_id> на идентификатор одного из ваших контейнеров:

docker inspect --format='Writable Layer Size: {{.SizeRw}}, Total Size: {{.SizeRootFs}}' <container_id>

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

Понимание различия между виртуальным размером и размером на диске важно. Виртуальный размер включает общие слои образа, в то время как размер на диске работающего контейнера в основном отражает уникальные данные, записанные в записываемый слой этого конкретного контейнера.

Проверка объекта определенного типа

На предыдущих этапах вы использовали команду docker inspect для контейнеров. Однако docker inspect - это универсальная команда, которая может быть использована для проверки различных объектов Docker, включая образы, сети и тома.

Для проверки объекта, отличного от контейнера, вам нужно указать тип объекта перед именем или идентификатором объекта. Синтаксис: docker inspect <object_type> <object_name_or_id>.

Давайте проверим образ nginx, который вы загрузили ранее.

Сначала выведите список своих образов, чтобы получить идентификатор или имя образа:

docker images

Найдите образ nginx и запишите его REPOSITORY, TAG или IMAGE ID.

Теперь проверьте образ nginx. Вы можете использовать имя образа и тег (например, nginx:latest) или идентификатор образа. Замените <image_name_or_id> соответствующим значением.

docker inspect image <image_name_or_id>

Это выведет подробную информацию об образе nginx, включая его слои, конфигурацию и метаданные. Обратите внимание, что структура вывода отличается от проверки контейнера, так как она отражает свойства образа.

Далее давайте проверим сеть Docker. Docker создает сети по умолчанию. Вы можете вывести их список, используя команду docker network ls.

docker network ls

Вероятно, вы увидите сети, такие как bridge, host и none. Давайте проверим сеть bridge.

docker inspect network bridge

Эта команда покажет детали о сети bridge, включая ее конфигурацию, подключенные контейнеры и информацию об IP-адресации.

Наконец, давайте проверим том Docker. Если у вас нет томов, вы можете создать один.

docker volume create myvolume

Теперь проверьте только что созданный том.

docker inspect volume myvolume

Это отобразит информацию о томе myvolume, такую как его драйвер, точка монтирования и область действия.

Указав тип объекта (container, image, network, volume и т.д.), вы можете использовать команду docker inspect для получения подробной информации о различных компонентах вашей среды Docker.

Итоги

В этом LabEx вы научились использовать команду docker inspect для получения подробной информации о контейнерах Docker. Вы начали с проверки контейнера и понимания полного стандартного вывода в формате JSON, который предоставляет широкий спектр сведений о конфигурации и состоянии.

Затем вы изучили, как форматировать вывод с помощью флага --format и шаблонов Go для извлечения определенной информации, например, IP - адреса контейнера. Это демонстрирует гибкость команды docker inspect в настройке вывода в соответствии с вашими потребностями.