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

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

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

Войдите, чтобы написать ответ

Похожие вопросы