Диагностика и отладка
docker logs -f [ID] — просмотр логов контейнера (флаг -f следит за ними в реальном времени).
docker inspect [ID] — полная инфо в JSON: IP, пути, переменные окружения, порты.
docker exec -it [ID] bash — зайти внутрь работающего контейнера (интерактивный режим).
docker stats — онлайн-мониторинг потребления ресурсов (CPU, RAM, Сеть).
docker top [ID] — список процессов, запущенных внутри конкретного контейнера.
docker diff [ID] — показать изменения в файловой системе контейнера относительно образа.
Работа с образами (Images)
docker images — список всех скачанных образов на сервере.
docker pull [Name] — скачать образ из репозитория (Docker Hub / Registry).
docker rmi [ID] — удалить образ.
docker build -t [Name] . — собрать новый образ из Dockerfile в текущей директории.
docker tag [Image] [NewName] — присвоить образу новый тег (версию).
Управление контейнерами (Жизненный цикл)
docker ps — список запущенных контейнеров.
docker ps -a — список всех контейнеров (включая остановленные и упавшие).
docker run — создание и запуск нового контейнера из образа.
docker stop [ID/Name] — плавная остановка контейнера.
docker rm [ID/Name] — удаление контейнера.
docker restart [ID/Name] — перезапуск контейнера.
Image и Container
Image (Образ) — это неизменяемый шаблон (как инсталлятор .exe).
Container (Контейнер) — запущенный экземпляр этого образа. Образ — это диск, контейнер — это процесс.
Слои (Layers)
Он состоит из слоев (ReadOnly).
Каждый новый слой — это команда в Dockerfile.
Это экономит место: если у 10 образов одна база (например, Ubuntu), она хранится на диске в одном экземпляре.
Troubleshooting
Команда - docker logs <container_id></container_id>
Если контейнер уже удалился — docker ps -a (найти ID), затем логи.
Если логи пусты — проверяем docker inspect на предмет неверных Entrypoint или CMD.
Зачем нужна команда docker inspect?
Позволяет увидеть всю подкапотку:
- IP-адрес контейнера,
- проброшенные порты,
- переменные окружения (ENV),
- примонтированные тома (Mounts/Volumes).
Как «зайти» в работающий контейнер и выполнить команду?
docker exec -it <container_id> bash (или sh).</container_id>
Это нужно для ручной проверки конфигов или доступности сети внутри контейнера.
Что будет с данными в БД внутри контейнера, если его удалить?
Если не использовались Volumes — данные пропадут. Чтобы данные выжили, нужно монтировать папку хоста в контейнер: -v /host/path:/container/path.
Как пробросить порты?
-p 8080:80
Он «пробрасывает» порт 8080 с твоей реальной машины на порт 80 внутри контейнера.
Очистка (Housekeeping)
docker system prune
Удалит все остановленные контейнеры, неиспользуемые сети и “висячие” (dangling) образы.