логотип PurpleSchool
логотип PurpleSchool

Cборка образа с Docker Buildx

Автор

Алексей Иванов

Введение

Docker Buildx — это инструмент из экосистемы Docker, который значительно усиливает возможности сборки Docker-образов. Он позволяет разрабатывать, тестировать и запускать образы в мультиархитектурной среде. Это особенно полезно, если вы хотите создавать образы для платформ, отличных от вашей текущей среды разработки, или если у вас есть необходимость автоматизировать процесс сборки сложных приложений. В этой статье я расскажу вам, как использовать Docker Buildx, чтобы значительно расширить ваши навыки работы с Docker.

Что такое Docker Buildx

Docker Buildx является частью плагина Docker CLI, позволяющим пользователям использовать мощные функции BuildKit напрямую в своих рабочих процессах. Он предоставляет вам доступ к функциям, которые недоступны в стандартных командах docker build.

Некоторые из ключевых функций Docker Buildx включают:

  • Multiplatform Builds: Сборка образов на несколько архитектур с одного вызова команды.
  • Кэширование: Улучшенное управление использованием кэша для ускорения процесса сборки.
  • Улучшенные логгирование и вывод: Подробный вывод процесса сборки.

Установка и настройка Docker Buildx

Прежде чем вы сможете начать использовать Docker Buildx, его необходимо установить и настроить в вашей системе.

Установка

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

Для проверки версии и доступности Buildx в вашей системе выполните следующую команду:

docker buildx version

Вы должны увидеть вывод, похожий на: github.com/docker/buildx v0.7.0 ..., который подтверждает успешную установку.

Создание и использование билдера

Давайте создадим Buildx-билдер, который будет управлять сборкой ваших образов:

docker buildx create --name mybuilder --use

Здесь мы создали билдера с именем mybuilder и указали его для использования. Обратите внимание, как просто это делается командой create.

Теперь проверьте состояние билдера:

docker buildx ls

Эта команда покажет вам информацию обо всех билдерах, которые настроены и активны в вашем окружении.

Использование Docker Buildx для мультиархитектурных сборок

Docker Buildx значительно упрощает процесс создания образов, которые могут запускаться на разных архитектурах процессоров, например, amd64, arm64 и ppc64le.

Сборка мультиплатформенного образа

Смотрите, я покажу вам, как можно собрать мультиплатформенный Docker-образ. Допустим, у нас есть Dockerfile, который описывает наш образ. Например, у вас может быть Dockerfile для простого Node.js приложения.

Запустите сборку образа для нескольких платформ следующей командой:

docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest .

Здесь флаг --platform указывает, для каких архитектур мы хотим осуществить сборку. Мы также указываем тэг -t myimage:latest для нашего образа.

Кэширование сборки образов

Одной из важных возможностей Docker Buildx является улучшенное кэширование. Оно помогает оптимизировать сборку и ускорить её. Флаг --cache-from и --cache-to позволяют импортировать и экспортировать кэш соответственно, что полезно при работе с CI/CD-системами.

Давайте рассмотрим, как это работает на практике:

docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest --cache-to=type=inline --push .

Здесь флаг --push обозначает, что после успешной сборки образ будет отправлен в указанное хранилище, например, Docker Hub. Флаг --cache-to=type=inline позволяет сохранить кэш внутри образа.

Улучшенные логирование и вывод

Docker Buildx также предлагает более детальный вывод процесса сборки. Вы можете использовать флаг --progress=plain для получения очень подробного вывода или --progress=tty для стандартного интерфейсного вывода.

docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest --progress=plain .

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

Заключение

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

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile