Как использовать команду docker scout quickview для получения обзора образа

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

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

Введение

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


Skills Graph

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

Получить быстрый обзор конкретного образа

На этом этапе вы узнаете, как получить быстрый обзор конкретного 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-образ, что особенно полезно в рамках активного цикла разработки. Это включало в себя понимание того, как выводить список образов и, при необходимости, фильтровать или сортировать их, чтобы найти самый свежий образ для проверки.