tgoop.com/loose_code/1408
Last Update:
Все пользуются Docker, но очень немногие знают, как дебажить контейнер Docker
Нет, я не про docker logs
, или docker inspect
, или docker exec
.
Я про docker events
.
Скорее всего, ты даже не знал, что он существует. Но он стримит низкоуровневые события в реальном времени прямо от Docker-демона; не только по твоему контейнеру.
Представь ситуацию:
Ваш контейнер в проде постоянно рестартится. А у вас локально всё ок.
И как настоящий герой, ты заходишь по SSH на сервер и начинаешь привычный дебаг-ритуал:docker logs
→ ничегоdocker inspect
→ статикаdocker exec
→ не успеваете подключиться, он умирает раньше
Знакомо, да?
Что дальше? Дай угадаю:
Ты начинаешь шаманить с Dockerfile и гонять его подряд через docker run
. Просто потому, что никогда не слышал про docker events
.
А теперь попробуй вот так:
docker events --filter container=<your_container_id>
Пример вывода:
2025-05-04T18:20:01Z container create ...
2025-05-04T18:20:02Z container start ...
2025-05-04T18:20:03Z container health_status: unhealthy ...
2025-05-04T18:20:04Z container kill signal=SIGTERM
2025-05-04T18:20:04Z container restart
И вуаля. Healthcheck завалился → контейнер прибили → Docker его автоматически перезапустил.
А в логах твоего приложения этого нет. Потому что healthcheck живёт вне основного процесса.
Бонус-фичи:
docker events --since 30m --until "2025-05-04T18:00:00"
docker events --format '{{json .}}'
docker events
И прежде чем сказать:
«Ну вообще-то, в современной инфре надо использовать Grafana, Loki, Prometheus для наблюдаемости…»
Окей. Удачи дебажить:
docker events
всё это видит. В реальном времени.Если вы дебажите Docker без этого, вы не дебажите - вы гадаете.