Как использовать команду docker image history для проверки слоёв образа

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

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

Введение

В этой лабораторной работе вы научитесь использовать команду docker history для изучения слоёв Docker-образа. Понимание слоёв образа и команд, которые их создают, крайне важно для отладки и оптимизации ваших Docker-образов.

Вы начнёте с просмотра базовой истории образа, затем изучите опции для отключения усечения вывода, чтобы видеть полные команды, а также используете тихий режим вывода для краткого просмотра. Кроме того, вы узнаете, как форматировать вывод истории с помощью шаблонов Go для создания настраиваемых отчётов и как просматривать историю для образов, собранных под определённые платформы.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/inspect -.-> lab-555153{{"Как использовать команду docker image history для проверки слоёв образа"}} docker/pull -.-> lab-555153{{"Как использовать команду docker image history для проверки слоёв образа"}} docker/images -.-> lab-555153{{"Как использовать команду docker image history для проверки слоёв образа"}} end

Просмотр истории Docker-образа

На этом шаге вы узнаете, как просмотреть историю Docker-образа. История образа показывает слои, из которых он состоит, и команды, использованные для создания каждого слоя. Это полезно для понимания процесса сборки образа и отладки проблем.

Сначала загрузим Docker-образ для изучения. В этом примере мы будем использовать образ ubuntu.

docker pull ubuntu

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

docker history ubuntu

Результат выполнения команды docker history отобразит таблицу со следующими столбцами:

  • IMAGE: ID слоя образа.
  • CREATED: Время создания слоя.
  • CREATED BY: Команда, использованная для создания слоя.
  • SIZE: Размер слоя.
  • COMMENT: Комментарий, связанный со слоем.

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

Просмотр истории без усечения вывода

На предыдущем шаге вы просматривали историю образа ubuntu. Возможно, вы заметили, что часть вывода, особенно команды в столбце CREATED BY, была усечена. Это стандартное поведение команды docker history для компактного отображения информации.

Чтобы увидеть полный вывод без усечения, используйте флаг --no-trunc с командой docker history.

Попробуем это с образом ubuntu:

docker history --no-trunc ubuntu

Теперь вы увидите полные команды, которые использовались для создания каждого слоя образа ubuntu. Это особенно полезно, когда необходимо точно понять, как был собран слой, особенно для сложных образов с длинными командами сборки.

Сравните вывод этой команды с результатом предыдущего шага, чтобы увидеть разницу в столбце CREATED BY.

Просмотр истории в компактном режиме

На предыдущих шагах вы видели подробную историю образа ubuntu, включая команды, использованные для создания каждого слоя. Однако иногда может потребоваться только список ID образов слоёв без дополнительной информации.

Для получения сокращённого вывода, содержащего только ID образов, используйте флаг -q или --quiet с командой docker history.

Просмотрим историю образа ubuntu в компактном режиме:

docker history -q ubuntu

Теперь вывод будет содержать только ID образов слоёв, по одному на строку. Это может быть полезно, когда требуется быстро получить список ID слоёв для скриптов или других целей.

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

Форматирование вывода истории с использованием Go-шаблона

Помимо стандартного и компактного форматов вывода, команда docker history позволяет форматировать результаты с использованием Go-шаблонов. Это даёт детальный контроль над тем, какая информация отображается и как она представлена.

Флаг --format используется для указания Go-шаблона. Вы можете обращаться к различным полям истории образа, используя синтаксис шаблонов. Некоторые распространённые поля включают .ID, .Created, .CreatedBy, .Size и .Comment.

Попробуем отформатировать вывод, чтобы показать только ID образа и команду, использованную для создания слоя, разделённые табуляцией:

docker history --format "{{.ID}}\t{{.CreatedBy}}" ubuntu

В этом шаблоне:

  • {{.ID}} ссылается на ID образа слоя
  • \t представляет символ табуляции для разделения
  • {{.CreatedBy}} указывает на команду, использованную для создания слоя

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

docker history --format "{{.ID}}\t{{.Size}}\t{{.CreatedBy}}" ubuntu

Использование Go-шаблонов предоставляет мощный способ извлечения конкретной информации из истории образов для целей скриптинга или отчётности.

Просмотр истории для конкретной платформы

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

Команда docker history позволяет указать целевую платформу с помощью флага --platform. Формат платформы обычно выглядит как os/архитектура. Например, linux/amd64 или linux/arm64.

Давайте посмотрим историю образа ubuntu специально для платформы linux/amd64:

docker history --platform linux/amd64 ubuntu

Вывод покажет историю образа ubuntu, собранного для архитектуры linux/amd64. Если образ недоступен для указанной платформы, вы можете увидеть ошибку или другую историю в зависимости от того, как был собран образ.

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

Итоги

В этой лабораторной работе вы научились использовать команду docker history для проверки слоёв образа Docker. Вы начали с загрузки образа ubuntu, а затем просмотрели его историю, которая отображает информацию о каждом слое, включая ID образа, время создания, команду, использованную для его создания, и его размер. Это даёт чёткое представление о процессе сборки образа.

Затем вы изучили параметры для изменения вывода команды docker history. Вы узнали, как отключить усечение вывода с помощью флага --no-trunc, чтобы увидеть полные команды, использованные для сборки каждого слоя. Это крайне важно для понимания точных шагов, задействованных при создании образа. В лабораторной работе также рассматривается просмотр истории в сокращённом формате с помощью флага -q (только ID образов), форматирование вывода с использованием шаблонов Go для настраиваемого представления и отображение истории для конкретной платформы с помощью флага --platform.