В той степени, в которой Docker вообще имеет эту концепцию, она следует обычной семантике Unix. Контейнер запускает один процесс, и когда этот процесс завершается, контейнер также завершается. Если процесс завершается с кодом состояния 0, он «успешен», а если он завершается с любым другим кодом состояния, он «завершается неудачей».
В контексте контейнера Java, Есть полный список кодов выхода из JVM утверждает, что JVM всегда будет выходить с кодом состояния 0 («успех»), даже если программа завершится с неперехваченным исключением; он вернет «сбой» только в том случае, если сама JVM каким-то образом выйдет из строя.
Самое важное, что может иметь значение, это политика перезапуска . Если вы запустите свой контейнер с docker run --restart on-failure
, неперехваченное исключение не будет считаться «неудачей», и ваш контейнер не будет перезапущен.