2015-01-14 5 views
21

У меня есть контейнер Docker, который содержит процесс JVM. Когда процесс завершается, контейнер завершается и останавливается.Как я могу узнать, почему контейнер Docker остановлен?

Хотя, к счастью, редко, мой JVM может внезапно спускаться с жестким отказом, например. OutOfMemoryError. Когда это происходит, мой контейнер просто останавливается, как обычный выход JVM.

Я мог бы распределить ведение журнала и т. Д. Для обычного ведения журнала JVM, но в этом случае с жестким отказом я хочу знать умирающие слова JVM, которые обычно произносятся на stderr.

Есть ли способ узнать, почему мой контейнер остановился, оглядеться в журналах, stderr или что-то в этом роде?

+4

Что вы видите в журналах 'docker' для остановленного контейнера? Вы пробовали подписаться на мероприятия? Демон 'docker' предоставляет API: https://docs.docker.com/reference/api/docker_remote_api_v1.16/ – Andy

+1

Контейнер ушел, т. Е. Его нет, когда я делаю docker ps, поэтому я не знаю, как получить журналы на нем. Я проверю события api. У меня есть мониторинг, поэтому я знаю, что jvm умер ... Я просто не знаю, какие последние сообщения выводятся на stderr, которые не регистрируются (в случае OOM регистратор может даже не работать) – Greg

+13

Вы можете запускать журналы докеров [ ContainerName] или [ContainerID] даже в остановленных контейнерах. Вы можете увидеть их с докером ps -a –

ответ

25

Вы можете запустить команду docker logs [ContainerName] или docker logs [ContainerID] даже на остановленных контейнерах. Вы можете увидеть их с помощью docker ps -a.

Источник: the comment of Usman Ismail выше: это всего лишь способ конвертировать свой комментарий в правильный ответ.

Смежные вопросы