Сборка образа: 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Завершение команды