Перейти к содержанию

🐳 Использование Docker

Основные команды

Посмотреть список запущенных контейнеров

docker ps
или
docker container ls

Посмотреть все контейнеры (включая остановленные)

docker ps -a

Запустить контейнер

docker start <container_name>

Остановить контейнер

docker stop <container_name>

Перезапустить контейнер

docker restart <container_name>

Подключиться к контейнеру с shell

docker exec -it <container_name> bash

Просмотреть логи контейнера

docker logs -f <container_name>

Удалить контейнер

docker rm <container_name>

Значения столбцов (docker ps)

  • CONTAINER ID — уникальный идентификатор контейнера
  • IMAGE — название образа, из которого создан контейнер
  • COMMAND — команда, которая выполняется при запуске контейнера
  • CREATED — время, прошедшее с момента создания контейнера
  • STATUS — текущее состояние контейнера
  • PORTS — информация о проброшенных портах, внешний \ внутренний порт. Внешним является тот который видит хост, внутренний это порт внутри самого контейнера ( взаимодействуем с внешним )
  • NAMES — имя контейнера <container_name>
  • SIZE — размер контейнера (показывается с флагом -s). Пример docker ps -s

Примечания по столбцу STATUS

🟢 Up [время] - Контейнер запущен и работает

Пример: Up 5 minutes, Up 2 hours

Что делать: Контейнер работает нормально, дополнительных действий не требуется

Команды для мониторинга:

docker logs <container_name>  # посмотреть логи
docker stats <container_name> # мониторинг ресурсов


🔴 Exited ([код]) [время] - Контейнер завершил работу

  • Пример: Exited (0) 2 hours ago, Exited (137) 5 minutes ago
  • Коды завершения:

  • 0 - Успешное завершение

  • 1-255 - Ошибка (чем больше число, тем серьезнее ошибка)
  • 137 - Принудительное завершение (SIGKILL)
  • 143 - Корректное завершение работы приложения (SIGTERM)

🟡 Restarting [время] - Контейнер перезапускается

Пример: Restarting (1) 5 seconds ago

Что делать:

# Проверить логи для диагностики
docker logs <container_name>

# Проверить политику перезапуска
docker inspect <container_name> | grep -A5 RestartPolicy

# Если зациклился, остановить
docker stop <container_name>


⏸️ Paused [время] - Контейнер приостановлен

Пример: Paused 10 minutes

Что делать:

# Возобновить работу
docker unpause <container_name>

# Или полностью остановить
docker stop <container_name>


⚠️ Dead - Контейнер "мертв" (не может быть перезапущен)

Что делать:

# Только удаление
docker rm <container_name>

# Проверить системные логи Docker
docker events


🕐 Created - Контейнер создан, но не запущен

Что делать:

# Запустить контейнер
docker start <container_name>

# Или удалить, если не нужен
docker rm <container_name>


Примеры использования команд

Пример использования в контейнере php

# Попасть внутрь контейнера
docker exec -it backend_prod_project bash

# Внутри контейнера взаимодействие с supervisord
supervisorctl -c /etc/supervisor/supervisord.conf status

# Внутри контейнера взаимодействие с vipnet
vipnetclient info

Пример использования в контейнере mysql

# Импорт БД с хоста внутрь контейнера
docker exec -i backend_prod_mysql mysql -u root -pharDPa44word polis_online < /tmp/data_dump.sql