что приведет к сбою контейнера и выходу - PullRequest
2 голосов
/ 08 апреля 2020

Я запускаю пакет jar в контейнере docker. Я обнаруживаю, когда возникает проблема тайм-аута соединения с базой данных или кафки, контейнер не работает. Тем не менее, я буду в порядке, если я напечатаю java журнал ошибок в консоли или файл журнала. Любой может уточнить лог c, чтобы определить контейнер как сбой / ошибка, спасибо!

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Ну, нет такой вещи, как сбой / errorneus контейнер. Docker изображение может иметь значение по умолчанию ENTRYPOIN или CMD , которое выполняется как docker контейнер запускается, но когда команда заканчивается docker жизненный цикл также заканчивается.

Я предполагаю, что вы запускаете какое-то серверное приложение в docker контейнере, который служит вечно, что наводит на мысль, что все изображения docker работают без остановки. Ваш docker, который должен всегда запускаться, останавливается после сбоя вашего приложения, вы можете увидеть подробности в журналах docker, если вы не запускали его с опцией --rm. Попробуйте docker ps -a увидеть ваш контейнер со статусом exited и просмотреть журналы выполнения или извлечь файлы из его файловой системы, чтобы отладить то, что пошло не так.

0 голосов
/ 08 апреля 2020

В той степени, в которой Docker вообще имеет эту концепцию, она следует обычной семантике Unix. Контейнер запускает один процесс, и когда этот процесс завершается, контейнер также завершается. Если процесс завершается с кодом состояния 0, он «успешен», а если он завершается с любым другим кодом состояния, он «завершается неудачей».

В контексте контейнера Java, Есть полный список кодов выхода из JVM утверждает, что JVM всегда будет выходить с кодом состояния 0 («успех»), даже если программа завершится с неперехваченным исключением; он вернет «сбой» только в том случае, если сама JVM каким-то образом выйдет из строя.

Самое важное, что может иметь значение, это политика перезапуска . Если вы запустите свой контейнер с docker run --restart on-failure, неперехваченное исключение не будет считаться «неудачей», и ваш контейнер не будет перезапущен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...