Значение кода выхода docker-compose?

Например, если я заставлю контейнер остановиться с kill, затем docker-compose ps чтобы проверить мои контейнеры, я получаю состояние как Exit 137, И с docker-compose stop я получил Exit 1/Exit 0

Поскольку документации для кода выхода нет, кто-нибудь может объяснить мне, что это такое?

2 ответа

Решение

Это связано не столько с докером, сколько с системой, в которой он работает. Если вы посмотрите в этой таблице зарезервированных кодов выхода для bash, вы увидите строку:

128+n   Fatal error signal "n"  kill -9 $PPID of script $? returns 137 (128 + 9)

Что соответствует 137, которые вы упомянули. Это 128 + 9 (SIGKILL), что вы можете увидеть на справочной странице signal(7). Обычно 0 означает чистый выход, а 1 - что-то не так, этих двух может быть достаточно для программиста. Однако они могут варьироваться в диапазоне 1-255, включая зарезервированные, упомянутые выше.

Это всего лишь краткий ответ, так как я не являюсь экспертом в этой области, вы можете найти больше информации в этом потоке unix.stackexchange по коду завершения по умолчанию, когда процесс завершен, или, возможно, кто-то здесь может дать гораздо более сложный ответ, чем мой.

Кажется, вам не хватает памяти. Это стандарт Linux, как упомянуто здесь: http://tldp.org/LDP/abs/html/exitcodes.html


Код ошибки 128: неверный аргумент для выхода


Код ошибки 128 + n: сигнал фатальной ошибки "n" kill -9 $PPID скрипта $? возвращает 137 (128 + 9)


Ошибка 137 в Docker означает, что контейнер был 'KILL' убит 'oom-killer' (Out of Memory). Это происходит, когда в контейнере недостаточно памяти для запуска процесса.

"OOM killer" - это проактивный процесс, который включается, чтобы спасти систему, когда уровень ее памяти становится слишком низким, убивая ресурсоемкие процессы, чтобы освободить память для системы.

Вот немного больше информации

Другие вопросы по тегам