Какими командами собирал Docker
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Docker Commands для сборки и управления образами и контейнерами
В качестве DevOps Engineer с десятилетним опытом, я активно использую Docker для создания, сборки и управления контейнерами. Вот ключевые команды, которые я регулярно применяю в работе.
Основные команды для сборки (Build)
Основная команда для сборки Docker-образов — docker build.
docker build -t myapp:latest .
-t myapp:latest— задаёт имя (myapp) и тег (latest) для создаваемого образа..— указывает контекст сборки (путь к директории сDockerfile).
Практические примеры и параметры:
# Сборка с указанием конкретного Dockerfile
docker build -f ./backend/Dockerfile.prod -t backend:v1.0 ./backend
# Сборка без использования кэша слоёв (для чистого тестирования)
docker build --no-cache -t myapp:test .
# Сборка с указанием целевой архитектуры (например, для ARM)
docker build --platform linux/arm64 -t myapp:arm .
# Сборка с ограничением ресурсов (например, памяти)
docker build --memory 512m -t myapp:optimized .
Dockerfile — это инструкция для сборки. Внутри него используются команды, которые Docker выполняет последовательно:
FROM— базовый образ.COPY/ADD— добавление файлов в образ.RUN— выполнение команд во время сборки (например, установка пакетов).CMD/ENTRYPOINT— команда для запуска контейнера.
Команды для управления образами (Images)
После сборки образ нужно проверить, протестировать и возможно опубликовать.
# Список всех локальных образов
docker images
# Или более современный вариант
docker image ls
# Удаление образа
docker image rm myapp:latest
# Пометка образа для реестра (например, Docker Hub)
docker tag myapp:latest myregistry.com/team/myapp:1.0
# Публикация образа в реестр
docker push myregistry.com/team/myapp:1.0
Команды для работы с контейнерами (Containers)
Сборка создаёт образ, но для запуска приложения нужен контейнер.
# Запуск контейнера из собранного образа
docker run -d --name myapp-container -p 8080:80 myapp:latest
# Параметры:
# -d — запуск в detached mode (в фоне)
# --name — присвоение имени контейнеру
# -p 8080:80 — проброс портов (host:container)
# Проверка запущенных контейнеров
docker ps
# Проверка всех контейнеров (включая остановленные)
docker ps -a
# Остановка контейнера
docker stop myapp-container
# Удаление контейнера
docker rm myapp-container
# Просмотр логов контейнера (очень важно для диагностики)
docker logs myapp-container
# Реальный пример запуска с переменными окружения и volume
docker run -d \
--name myapp-prod \
-p 80:8080 \
-e DATABASE_URL="postgres://user:pass@host/db" \
-v /host/data:/app/data \
myapp:latest
Усовершенствованные команды сборки и оптимизации
В современной практике мы часто используем мультистадийные сборки (multi-stage builds) в Dockerfile для уменьшения размера итогового образа.
# Пример multi-stage Dockerfile
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:latest AS runtime
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Для сборки такого файла команда docker build не меняется, но результат будет гораздо легче (финальный образ на основе alpine, без всего инструментария Go).
Дополнительные полезные команды для сборки:
# Экспорт образа в файл для передачи или архивирования
docker save -o myapp.tar myapp:latest
# Импорт образа из файла
docker load -i myapp.tar
# Проверка истории сборки образа (показывает слои)
docker history myapp:latest
# Инспекция образа (детальная информация, включая слои, переменные окружения)
docker image inspect myapp:latest
Инструменты и практики для эффективной сборки
- BuildKit: Современный движок сборки от Docker. Включается через переменную окружения
DOCKER_BUILDKIT=1или в настройках daemon. Он обеспечивает параллельную сборку, улучшенный кэш и секреты во время сборки.export DOCKER_BUILDKIT=1 docker build --secret id=mysecret,src=./secret.txt -t myapp:secure . .dockerignore: Файл, аналогичный.gitignore, который исключает файлы из контекста сборки, уменьшая его размер и увеличивая скорость.# Пример содержимого .dockerignore *.log .git node_modules Dockerfile- Параметризованные сборки с
--build-arg: Передача аргументов вDockerfile.docker build --build-arg VERSION=1.2.3 -t myapp:$VERSION .
Итог: Основной команда сборки — docker build. Однако эффективная работа с Docker требует комплексного использования целого ряда команд: docker image для управления образами, docker run для запуска контейнеров, а также вспомогательных команд для инспекции (inspect, history), очистки (rm, prune) и публикации (tag, push). Ключ к успеху — не только знание команд, но и понимание лучших практик: использование мультистадийных сборок, .dockerignore и оптимизации контекста для быстрых и безопасных pipeline в CI/CD.