Введение
В этом лабораторном занятии вы узнаете, как использовать команду docker inspect для быстрого получения обзора Docker-образов. Вы научитесь получать подробную информацию о конкретном образе, определять и изучать последний созданный образ, а также понять, как извлекать соответствующие данные из вывода инспекции с использованием параметров форматирования. В рамках лабораторного занятия будут приведены практические примеры с использованием образцовых образов и простого Dockerfile.
Получить быстрый обзор конкретного образа
На этом этапе вы узнаете, как получить быстрый обзор конкретного Docker-образа с помощью команды docker inspect. Эта команда предоставляет подробную информацию о Docker-объектах, включая образы, контейнеры, тома и сети.
Сначала давайте загрузим образец образа, который мы сможем проверить. Мы будем использовать образ hello-world, который является очень небольшим образом, используемым для тестирования.
docker pull hello-world
Вы должны увидеть вывод, указывающий на то, что образ загружается и скачивается.
Теперь, когда у нас есть образ, мы можем использовать docker inspect для получения информации о нем.
docker inspect hello-world
Эта команда выведет большой JSON-объект, содержащий различные сведения об образе hello-world, такие как его идентификатор, дата создания, архитектура, операционная система и конфигурация.
Для быстрого обзора вы, возможно, заинтересованы в определенных полях этого JSON-вывода. Вы можете использовать флаг -f или --format с командой docker inspect для указания шаблона Go, который форматирует вывод. Например, чтобы увидеть идентификатор образа и дату его создания, вы можете использовать следующую команду:
docker inspect -f '{{.Id}} {{.Created}}' hello-world
Эта команда выведет идентификатор образа, за которым следует временная метка его создания. {{.Id}} и {{.Created}} - это заполнители, которые ссылаются на поля Id и Created в JSON-выводе команды docker inspect.
Вы можете изучить другие поля в JSON-выводе полной команды docker inspect hello-world и использовать их в своей строке форматирования, чтобы получить нужную вам конкретную информацию.
Получить быстрый обзор недавно созданного образа
На этом этапе вы узнаете, как определить и получить быстрый обзор последнего созданного Docker-образа. Это полезно, когда вы активно разрабатываете и создаете образы и хотите быстро проверить последнюю версию.
Сначала создадим простой Dockerfile для сборки образа. В каталоге ~/project создайте файл с именем Dockerfile со следующим содержимым:
FROM alpine:latest
RUN echo "Hello, Docker!" > /app/message.txt
CMD cat /app/message.txt
В этом Dockerfile используется базовый образ alpine, добавляется файл с именем message.txt с содержимым "Hello, Docker!", и задается команда для вывода содержимого этого файла при запуске контейнера.
Теперь соберите Docker-образ с помощью команды docker build. Мы пометим его как my-recent-image.
docker build -t my-recent-image .
Точка . в конце команды указывает, что Dockerfile находится в текущем каталоге (~/project). Вы увидите вывод, показывающий процесс сборки.
После завершения сборки вы можете вывести список своих образов с помощью команды docker images.
docker images
Вы должны увидеть my-recent-image в списке, а также образ hello-world из предыдущего шага и базовый образ alpine. Последний созданный образ обычно появляется вверху списка или имеет самую позднюю дату создания.
Для быстрого обзора последнего созданного образа вы можете объединить docker images с инструментами командной строки, такими как head и awk, чтобы извлечь идентификатор образа первого образа в списке (который обычно является самым новым). Затем вы можете использовать docker inspect с этим идентификатором.
docker inspect $(docker images -q | head -n 1)
Разберем эту команду:
docker images -q: Эта команда выводит только идентификаторы образов.head -n 1: Эта команда берет первую строку вывода, которая является идентификатором самого нового образа.$(...): Это подстановка команды, которая выполняет команду в скобках и подставляет ее вывод в внешнюю команду.docker inspect ...: Эта команда проверяет образ с идентификатором, полученным из подстановки команды.
Это выведет подробную JSON-информацию о последнем созданном образе. Вы снова можете использовать флаг -f с командой docker inspect для форматирования вывода по мере необходимости, как в предыдущем шаге.
Например, чтобы увидеть идентификатор и дату создания самого нового образа:
docker inspect -f '{{.Id}} {{.Created}}' $(docker images -q | head -n 1)
Это обеспечивает быстрый способ получения ключевой информации о только что созданном образе.
Получить быстрый обзор из файла SPDX
На этом этапе вы узнаете, как получить быстрый обзор программных компонентов в Docker-образе, сгенерировав и изучив файл SPDX (Software Package Data Exchange). SPDX - это открытый стандарт для передачи информации о материальном составе программного обеспечения (SBOM), включая компоненты, лицензии и авторские права.
Для генерации файла SPDX для Docker-образа требуется инструмент, который может проанализировать слои образа и извлечь необходимую информацию. Одним из таких инструментов является syft, командная строка для генерации SBOM из контейнерных образов и файловых систем.
Поскольку syft не предустановлен, мы загрузим и установим его. Мы загрузим последний релиз для Linux.
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo bash -s -- -b /usr/local/bin
Эта команда загружает скрипт установки syft и выполняет его с использованием sudo для установки бинарного файла в /usr/local/bin. Вам может потребоваться ввести пароль, но у пользователя labex есть возможность использовать sudo без ввода пароля.
После установки вы можете проверить, что syft установлен, проверив его версию:
syft version
Вы должны увидеть информацию о версии syft.
Теперь давайте сгенерируем файл SPDX для образа my-recent-image, который мы собрали на предыдущем этапе. Мы выведем результат в файл с именем my-recent-image.spdx.json в каталоге ~/project.
syft my-recent-image -o spdx-json > ~/project/my-recent-image.spdx.json
Эта команда сообщает syft проанализировать my-recent-image и вывести результаты в формате SPDX JSON, перенаправив вывод в указанный файл. Этот процесс может занять некоторое время в зависимости от размера образа.
После завершения команды у вас будет файл SPDX JSON, содержащий подробный инвентарь программных пакетов, найденных в образе. Вы можете просмотреть содержимое этого файла с помощью текстового редактора, такого как nano:
nano ~/project/my-recent-image.spdx.json
Внутри файла вы найдете информацию об образе и список обнаруженных пакетов, включая их имена, версии и лицензии. Это дает быстрый обзор программных компонентов, присутствующих в вашем образе, не требуя запускать контейнер или вручную проверять отдельные слои.
Вы можете прокрутить файл, чтобы увидеть разные разделы и информацию, которую они содержат. Найдите массив packages, который перечисляет обнаруженные программные компоненты.
Нажмите Ctrl + X, чтобы выйти из nano.
Резюме
В этом практическом занятии вы узнали, как получить быстрый обзор Docker-образов с помощью команды docker inspect. Вы попрактиковались в проверке конкретного образа, загрузив образ hello-world и использовав docker inspect для просмотра его подробной информации в формате JSON. Вы также узнали, как использовать флаг -f с командой docker inspect и шаблоны Go для извлечения и форматирования конкретных полей, таких как идентификатор образа и дата создания, что позволяет получить персонализированный быстрый обзор.
Кроме того, вы изучили, как определить и проверить недавно созданный Docker-образ, что особенно полезно в рамках активного цикла разработки. Это включало в себя понимание того, как выводить список образов и, при необходимости, фильтровать или сортировать их, чтобы найти самый свежий образ для проверки.



