Сборка образа: docker build

Собираем образ из Dockerfile командой docker build и запускаем контейнер из него.

Контекст сборки — набор файлов из указанной папки, который Docker отправляет движку для сборки образа.

Команда docker build

Базовый синтаксис:

docker build -t ИМЯ:ТЕГ ПУТЬ
  • -t ИМЯ:ТЕГ — имя и тег для образа (tag);
  • ПУТЬ — папка с Dockerfile и кодом (контекст сборки). Точка . означает текущую папку.

Собрать образ my-app версии 1.0 из текущей папки:

docker build -t my-app:1.0 .

Вывод:

[+] Building 12.3s (10/10) FINISHED
 => [1/5] FROM docker.io/library/node:22-alpine
 => [2/5] WORKDIR /app
 => [3/5] COPY package.json .
 => [4/5] RUN npm install
 => [5/5] COPY . .
 => exporting to image
 => => naming to docker.io/library/my-app:1.0

Каждый шаг сборки — это одна инструкция Dockerfile. После сборки образ появится в docker images.

Что такое контекст сборки

Точка в конце команды — это контекст: содержимое папки, которое Docker отправляет на сборку. Инструкции COPY могут копировать только файлы из контекста. Поэтому команду обычно запускают из корня проекта, где лежат и Dockerfile, и код.

Запуск своего образа

Образ собран — запускаем из него контейнер так же, как любой другой:

docker run -d --name app -p 3000:3000 my-app:1.0

Проверяем, что контейнер поднялся, и читаем логи:

docker ps
docker logs app

Указание другого Dockerfile

Если файл назван иначе или лежит не в корне, путь к нему передают через -f:

docker build -t my-app:1.0 -f docker/Dockerfile.prod .

Итог

  • docker build -t ИМЯ:ТЕГ . собирает образ из Dockerfile в текущей папке.
  • Контекст сборки — это папка-аргумент; из неё COPY берёт файлы.
  • Готовый образ запускается обычным docker run, как любой другой.
Проверьте себя
1. Что задаёт флаг -t в команде docker build?
AТаймаут сборки
BИмя и тег создаваемого образа
CПуть к Dockerfile
DКоличество потоков
2. Что означает точка в команде docker build -t my-app .?
AСкрытый файл
BКонтекст сборки — текущая папка с Dockerfile и кодом
CЗапуск в фоне
DЗавершение команды
Поддержать проект