Компания Docker реформировала разработку и развертывание программного обеспечения, предоставив легкое, портативное и эффективное решение. Команда «docker build» лежит в основе процесса создания образа Docker. В этой статье мы рассмотрим команду сборки Docker, ее синтаксис, использование и рекомендации по оптимизации ваших сборок Docker.
Предварительные требования
Чтобы следовать демонстрации, включенной в это руководство, убедитесь, что у вас есть:
- Установлен Docker или Docker Desktop
Что делает Docker build?
Итак, что именно представляет собой команда Docker build и какова ее роль в экосистеме Docker? Docker build — это команда интерфейса командной строки (CLI), которая позволяет создавать образы Docker на основе инструкций, указанных в Dockerfile. Это автоматизирует процесс создания образа, обеспечивая согласованность и повторяемость.
Синтаксис и использование команды Docker build
Чтобы иметь возможность использовать команду сборки Docker, вы должны сначала понять ее синтаксис. Понимание синтаксиса и доступных опций поможет вам настроить процесс сборки в соответствии с вашими требованиями. Команда docker build выполняется со следующим синтаксисом:
docker build [OPTIONS] PATH | URL
OPTIONS
: Это относится к флагам и параметрам, которые изменяют поведение сборки.PATH | URL
: Это представляет контекст сборки или место, где вы хотите настроить свой контейнер docker, который может быть локальным каталогом или удаленным репозиторием Git.
Команда сборки Docker: часто используемые параметры и флаги с примерами
Понимая синтаксис и доступные опции команды Docker build, вы можете адаптировать процесс сборки к вашим конкретным потребностям, будь то назначение тегов, указание альтернативных расположений Dockerfile, передача переменных времени сборки или принудительная чистая сборка.
При работе с командой Docker build существует несколько часто используемых параметров и флагов, которые обеспечивают гибкость и индивидуальную настройку процесса сборки. Давайте рассмотрим некоторые из этих параметров и флагов на примерах:
-t
или--tag
: Этот параметр позволяет присвоить созданному образу тег для упрощения ссылок и управления версиями. В этом примере созданный образ будет помечен как «sampleapp» с «последней» версией.Пример использования:docker build -t sampleapp:latest .
-f
или-file
: Этот параметр можно использовать для указания другого имени файла Dockerfile или местоположения, если оно не названо «Dockerfile». В этом примере образ будет создан с использованием файла Dockerfile с именем «ProductionDockerfile» в текущем каталоге.Пример использования:docker build -f
ProductionDockerfile
.
--build-arg
: Опция--build-arg
позволяет передавать переменные времени сборки в Dockerfile, обеспечивая динамическую настройку в процессе сборки. Эта команда передает переменную времени сборки с именем «VERSION» и значением «10» в Dockerfile.Пример использования:docker build --build-arg VERSION=10.
--no-cache
: Этот параметр можно использовать, чтобы заставить Docker игнорировать кэшированные слои и выполнить новую сборку. Эта команда заставляет Docker игнорировать кэш и выполнить новую сборку с использованием всех слоев.Пример использования:docker build --no-cache .
--target
: Если ваш Dockerfile содержит несколько этапов сборки, определенных с помощьюFROM
инструкции, опция--target
позволяет вам указать конкретный целевой этап для сборки. В этом примере будет собран только этап, определенный как «mytarget» в Dockerfile.Пример использования:docker build --target mytarget .
--quiet
или-q
: параметр--quiet
подавляет вывод сборки, отображая только конечный идентификатор изображения после успешной сборки. Эта команда выполняет сборку в автоматическом режиме, показывая только результирующий идентификатор изображения.Пример использования:docker build --quiet .
Это всего лишь несколько часто используемых параметров, и сборка Docker предоставляет дополнительные параметры и флаги, которые вы можете изучить в официальной документации Docker.
Как работает Docker build?
В процессе сборки Docker создается образ Docker на основе инструкций в Dockerfile. Этот файл содержит инструкции по сборке, такие как копирование файлов, установка зависимостей, выполнение команд и многое другое.
При запуске docker build
демон Docker считывает Dockerfile и выполняет каждую инструкцию по порядку, создавая многоуровневый образ. Каждая инструкция создает облегченный снимок файловой системы, доступный только для чтения, известный как слой. Docker кэширует неизмененные слои для ускорения последующих сборок. Слои, которые не менялись с момента предыдущей сборки, кэшируются и используются повторно, что позволяет избежать необходимости перестраивать эти слои и значительно сократить время сборки.
После выполнения всех инструкций Docker создает окончательный образ, содержащий приложение и его зависимости, готовый к использованию для запуска контейнеров.
Как создать образ Docker из Dockerfile: шаг за шагом
Чтобы создать образ Docker из Dockerfile, давайте посмотрим на docker build
команду в действии. В следующих шагах мы создадим простой образ Docker, веб-сервер для обслуживания веб-страницы посредством установки. Вы собираетесь создавать, запускать и тестировать его на своем локальном компьютере.
Шаг 1 — Создайте рабочий каталог
Создайте каталог или папку для использования в этой демонстрации (здесь используется «docker-demo») и перейдите в этот каталог, выполнив следующие команды в вашем терминале:
mkdir docker-demo
cd docker-demo
Создайте файл с именем «index.html» в каталоге и добавьте в него следующее содержимое:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Simple App</title>
</head>
<body>
<h1>Hello World</h1>
<p>This is running in a docker container</p>
</body>
</html>
Это будет служить веб-страницей, которая будет обслуживаться сервером.
Шаг 2 — Выберите базовый образ
Затем выберите подходящий базовый образ из Docker Hub или локального репозитория. Базовый образ формирует основу вашего пользовательского образа и содержит операционную систему и основные зависимости. Почти каждый отдельный образ для Docker основан на другом образе. Для этой демонстрации вы будете использовать nginx: stable-alpine3.17-slim в качестве базового образа.
Шаг 3 — Создание Dockerfile
Теперь создайте файл с именем «Dockerfile». В этом файле будут определены инструкции по сборке для вашего образа. По умолчанию, когда вы запускаете docker build
команду, docker выполняет поиск файла Dockerfile.
Шаг 4 — Добавьте инструкции по сборке в Dockerfile
Откройте Dockerfile в текстовом редакторе и добавьте следующие строки:
FROM nginx:stable-alpine3.17-slim
COPY index.html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Приведенная выше инструкция создаст образ Docker, который будет обслуживать предоставленный файл «index.html» через веб-сервер Nginx при запуске контейнера на основе этого образа.
Инструкция FROM инициализирует новый этап сборки и устанавливает базовый образ для последующих инструкций. Инструкция КОПИРОВАТЬ копирует файлы или каталоги (обычно исходный код) из исходного кода в указанное местоположение внутри образа. Файл копируется в каталог «/ usr / share / nginx / html», который по умолчанию используется для обслуживания статических файлов на веб-сервере Nginx. Основная цель инструкции CMD — предоставить значения по умолчанию для выполняющихся контейнеров. Инструкции, определенные в Dockerfiles, различаются в зависимости от типа образа, который вы пытаетесь создать.
Шаг 5 — Создайте образ с помощью команды Docker build
Перед созданием образа Docker убедитесь, что у вас установлен Docker, выполнив команду docker --version
.
Чтобы создать свой контейнер, убедитесь, что вы находитесь в папке, в которой находится ваш Dockerfile, и запустите следующую команду в терминале:
docker build -t sampleapp:v1 .
Эта команда запускает процесс сборки Docker для создания образа Docker на основе инструкций, указанных в Dockerfile, расположенном в текущем каталоге (.)
Флаг -t
задает тег для образа, позволяющий присвоить ему имя и версию. В этом случае изображение будет помечено как «sampleapp» с версией «v1», предоставляющей описательный идентификатор для изображения, что упрощает обращение к нему и управление.
Вы должны увидеть запуск процесса сборки и вывод, указывающий на то, что он завершен, когда это будет сделано.
Шаг 6 — Проверьте созданный образ Docker
После успешной сборки проверьте образ, выполнив docker images
команду, чтобы вывести список всех доступных образов на вашем хосте Docker. Вы должны увидеть свой вновь созданный образ в списке с присвоенным ему тегом и другими соответствующими сведениями, готовый к использованию для запуска контейнеров или отправки в реестр контейнеров для распространения.
Шаг 7 — Запустите образ Docker
Затем запустите образ Docker как контейнер, используя:
docker run -p 8080:80 sampleapp:v1
Эта команда сообщает Docker запустить sampleapp
контейнер. Флаг -p
задает сопоставление портов, которое сопоставляет порт с хост-компьютера с портом внутри контейнера. Здесь вы сопоставляете порт 8080 хост-машины с портом 80 контейнера. Вы можете изменить порт хоста в соответствии с вашими предпочтениями. Убедитесь, что вы указали имя образа и версию, которые вы использовали при создании образа.
Шаг 8 — Доступ к приложению
Когда контейнер запущен, вы можете перейти к доступу к приложению. Откройте веб-браузер и перейдите к localhost:8080
, и вы должны увидеть пример веб-страницы, отображаемой в вашем веб-браузере.
Основано на публикации.