Значение кода выхода 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" - это проактивный процесс, который включается, чтобы спасти систему, когда уровень ее памяти становится слишком низким, убивая ресурсоемкие процессы, чтобы освободить память для системы.