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

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

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

Введение

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

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


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/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-555054{{"Как использовать команду docker buildx history open для просмотра деталей сборки"}} docker/inspect -.-> lab-555054{{"Как использовать команду docker buildx history open для просмотра деталей сборки"}} docker/images -.-> lab-555054{{"Как использовать команду docker buildx history open для просмотра деталей сборки"}} docker/build -.-> lab-555054{{"Как использовать команду docker buildx history open для просмотра деталей сборки"}} end

Создание простого Docker-образа

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

Сначала перейдите в директорию ~/project, которая является рабочей для этой лабораторной работы.

cd ~/project

Теперь создадим простой Dockerfile. Мы создадим файл с именем Dockerfile в директории ~/project.

nano Dockerfile

В редакторе nano вставьте следующее содержимое:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y cowsay
CMD ["cowsay", "Hello, Docker!"]

Разберём этот Dockerfile:

  • FROM ubuntu:latest: Эта инструкция указывает базовый образ для нашего нового образа. Мы используем последнюю версию операционной системы Ubuntu.
  • RUN apt-get update && apt-get install -y cowsay: Эта инструкция выполняет команды в процессе сборки образа. Мы обновляем список пакетов и устанавливаем пакет cowsay — простую программу, которая отображает текст в "пузыре" коровы.
  • CMD ["cowsay", "Hello, Docker!"]: Эта инструкция задаёт команду по умолчанию, которая выполняется при запуске контейнера из этого образа. В данном случае она запускает cowsay с аргументом "Hello, Docker!".

Сохраните файл, нажав Ctrl + X, затем Y и Enter.

Теперь, когда у нас есть Dockerfile, мы можем собрать Docker-образ. Используйте команду docker build. Флаг -t позволяет присвоить образу имя и, опционально, тег в формате имя:тег. Точка . в конце команды указывает Docker искать Dockerfile в текущей директории.

docker build -t my-cowsay-image:latest .

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

После завершения сборки вы можете проверить, что образ создан, выведя список доступных образов с помощью команды docker images.

docker images

В выводе должен появиться образ my-cowsay-image.

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

docker run my-cowsay-image:latest

Вы должны увидеть вывод команды cowsay:

 _______
< Hello, Docker! >
 -------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

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

Просмотр истории сборки

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

Мы будем использовать команду docker history, указав после неё имя или ID образа. На предыдущем шаге мы собрали образ с именем my-cowsay-image. Давайте посмотрим его историю.

docker history my-cowsay-image:latest

В выводе будет представлена таблица со следующими столбцами:

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

Вы увидите записи, соответствующие инструкциям из нашего Dockerfile: базовый образ Ubuntu, команды apt-get и инструкция CMD. Каждая инструкция RUN в Dockerfile создаёт новый слой в образе.

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

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

Давайте посмотрим историю базового образа ubuntu:latest, который мы использовали.

docker history ubuntu:latest

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

Команда docker history предоставляет ценную информацию о структуре ваших Docker-образов.

Открытие конкретной сборки в Docker Desktop

На этом шаге мы рассмотрим, как обычно просматривают детали конкретной сборки образа с помощью Docker Desktop. Хотя среда LabEx предоставляет интерфейс командной строки, Docker Desktop — это популярный графический инструмент, который предлагает более наглядный способ работы с Docker.

Примечание: Docker Desktop — это графическое приложение, которое работает на вашем локальном компьютере (Windows, macOS или Linux с графической средой). Среда LabEx — это облачная виртуальная машина, доступная через веб-браузер, которая не имеет графической среды для запуска Docker Desktop. Поэтому вы не можете напрямую "открыть конкретную сборку в Docker Desktop" в этой среде LabEx.

Тем не менее, важно понимать, как это делается в типичной среде разработки с использованием Docker Desktop.

В Docker Desktop вы бы перешли в раздел "Images" (Образы). Здесь вы увидите список всех Docker-образов в вашей системе. Вы можете найти образ, который мы собрали, — my-cowsay-image:latest.

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

  • Обзор: Основную информацию об образе, такую как его размер, дата создания и ID.
  • Слои: Визуальное представление слоёв образа, аналогичное выводу команды docker history, но часто с более подробной информацией и графическим интерфейсом. Вы можете изучить каждый слой, чтобы увидеть выполненные команды, а также добавленные или изменённые файлы.
  • Теги: Список тегов, связанных с образом.
  • Уязвимости: Информацию о известных уязвимостях в образе (если сканирование включено).

Этот графический интерфейс в Docker Desktop упрощает изучение содержимого и истории образа по сравнению с выводом командной строки, особенно для сложных образов с множеством слоёв.

Хотя вы не можете выполнить это действие в текущей среде LabEx, понимание этой возможности Docker Desktop полезно для вашего общего обучения работе с Docker.

Чтобы завершить этот шаг в среде LabEx, мы просто подтвердим понимание концепции.

Итоги

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

После сборки образа вы изучили, как просмотреть историю сборки с помощью docker buildx history, а затем использовали команду docker buildx history open для просмотра деталей конкретной сборки непосредственно в Docker Desktop, что предоставило визуальный интерфейс для анализа процесса сборки и его артефактов.