Docker: основные команды и полезные приёмы

Шпаргалка для повседневной работы с образами, контейнерами, томами и сетями

Образы

ЗадачаКоманда
Скачать образdocker pull nginx:1.27
Список локальных образовdocker images
Собрать образ из Dockerfile в текущей папкеdocker build -t myapp:1.0 .
Собрать без кешаdocker build --no-cache -t myapp:1.0 .
Добавить тег к существующему образуdocker tag myapp:1.0 registry.example.com/myapp:1.0
Отправить образ в реестрdocker push registry.example.com/myapp:1.0
Посмотреть слои образа и размер каждогоdocker history myapp:1.0
Удалить образdocker rmi myapp:1.0

Контейнеры

ЗадачаКоманда
Запустить контейнер в фоне с портом и именемdocker run -d -p 8080:80 --name web nginx:1.27
Одноразовый запуск, контейнер удалится после выходаdocker run --rm -it alpine sh
Передать переменные окруженияdocker run -e APP_ENV=prod -e DB_HOST=db web-app
Запущенные контейнерыdocker ps
Все контейнеры, включая остановленныеdocker ps -a
Логи, последние 100 строк и слежениеdocker logs -f --tail 100 web
Логи только за последние 10 минутdocker logs --since 10m web
Зайти внутрь работающего контейнераdocker exec -it web sh
Выполнить одну команду без входаdocker exec web cat /etc/nginx/nginx.conf
Остановить, запустить, перезапуститьdocker stop web, docker start web, docker restart web
Процессы внутри контейнераdocker top web
Потребление CPU и памяти в реальном времениdocker stats
Подробные метаданные (IP, монтирования, переменные)docker inspect web
Скопировать файл из контейнера на хостdocker cp web:/etc/nginx/nginx.conf ./nginx.conf
Удалить контейнерdocker rm web (для работающего добавьте -f)

Тома и сети

ЗадачаКоманда
Именованный том для данныхdocker run -d -v pgdata:/var/lib/postgresql/data postgres:16
Примонтировать папку с хоста (только чтение)docker run -v $(pwd)/config:/app/config:ro myapp
Список томов и сетейdocker volume ls, docker network ls
Создать свою сеть и подключить контейнеры по имениdocker network create backend, затем --network backend

Docker Compose

ЗадачаКоманда
Поднять стек в фонеdocker compose up -d
Пересобрать образы и поднятьdocker compose up -d --build
Статус сервисовdocker compose ps
Логи одного сервисаdocker compose logs -f web
Остановить и удалить контейнеры и сетиdocker compose down
То же, но с томами (данные удалятся)docker compose down -v

Полезные приёмы

docker system prune -a --volumes удаляет все неиспользуемые образы, контейнеры, сети и тома. Тома содержат данные баз, и их не вернуть. Перед такой очисткой проверьте, что важные данные сохранены.
Для воспроизводимости используйте конкретные теги (nginx:1.27, а не latest) и, где нужно, digest вида image@sha256:.... Тогда одна и та же команда даст один и тот же образ на любой машине.