Задать вопрос

Как отслеживать состояние внутри Docker контейнера?

Есть какая-то исполняемая программа, которая запускается в контейнере Docker. Данная программа выступает в качестве некой службы, которая делает что-то. Как узнать состояние этой программы в самом контейнере? Она запущена и работает или же упала и контейнер просто висит и в нем ни чего не происходит? Как запустить ее заново без рестарта контейнера, да еще и в автоматическом режиме? Вот такие штуки интересны. Расскажите пожалуйста.
  • Вопрос задан
  • 1995 просмотров
Подписаться 2 Простой Комментировать
Решение пользователя Илья Толлю К ответам на вопрос (2)
Вам следует создавать Docker-контейнер таким образом, чтобы в нём работал один ключевой процесс (у которого будет PID 0), завершение которого означает завершение работы контейнера. Код выхода этого процесса будет кодом выхода контейнера. Вы сможете увидеть его в выводе `docker ps --all`. Подробнее здесь: each-container-should-have-only-one-concern. Это не означает, что в контейнере должен быть всего один процесс, но должен быть один такой процесс, жизненный цикл которого неразрывно связан с жизненным циклом контейнера.

Логи этот процесс должен писать в STDOUT и STDERR - тогда Вы их сможете увидеть с помощью `docker logs ` и перенаправить куда надо с помощью драйвера логирования, настроенного в Докер-демоне. Подробнее здесь: View a container's logs
Ответ написан
Комментировать