🐳 Использование 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 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