Ответ
Процесс состоит из двух основных шагов: сборки образа и запуска контейнера.
1. Сборка образа (Build):
Команда docker build создает образ на основе инструкций в Dockerfile.
# Сборка образа с тегом 'myapp:latest' из контекста текущей директории
docker build -t myapp:latest .
# Сборка с указанием конкретного Dockerfile и сборка для другой архитектуры
docker build -f Dockerfile.prod -t myapp:prod --platform linux/amd64 .
2. Запуск контейнера (Run):
Команда docker run создает и стартует контейнер из собранного образа.
# Базовый запуск в интерактивном режиме
docker run -it myapp:latest
# Запуск в фоне (демон) с пробросом портов и монтированием volume
docker run -d
--name myapp-container
-p 8080:80
-v /host/path:/container/path
--env-file .env
myapp:latest
Рабочий пример из практики: Допустим, есть простой Dockerfile для веб-приложения:
# Dockerfile
FROM nginx:alpine
COPY ./src /usr/share/nginx/html
EXPOSE 80
Сборка и запуск будут выглядеть так:
docker build -t my-webapp .
docker run -d -p 8080:80 my-webapp
После этого приложение будет доступно по адресу http://localhost:8080.
Важные моменты:
- Контекст сборки: Точка (
.) в конце командыbuildопределяет контекст — все файлы из этой директории отправляются Docker-демону. Важно использовать.dockerignore, чтобы исключить ненужные файлы (например,node_modules,.git). - Кэширование слоев: Docker кэширует каждый слой образа. Изменение инструкции в Dockerfile инвалидирует кэш для этой и всех последующих инструкций. Это важно для оптимизации скорости сборки.