Коды выхода (Exit codes) Docker-контейнеров
Наиболее распространенные коды выхода, что они означают и что их вызывает
Один из самых частых вопросов, с которыми я сталкиваюсь в повседневной работе — “почему контейнер не запустился (или почему отвалился)?”. Можно ли, посмотрев на exit code контейнера, увидеть, где проблема?
В этой статье перечислены наиболее распространенные exit codes и даны ответы на два важных вопроса:
- Что означает этот конкретный код выхода?
- Какое действие вызвало этот код выхода?
Как узнать Exit code
Проще всего вот так:
docker ps -a
Есть еще несколько способов, например:
docker inspect <container-id> — format=’{{.State.ExitCode}}’
но первый самый простой :)
Любой exit code, отличный от 0
свидетельствует о том, что работа контейнера завершена некорректно.
Самые распространенные Exit Codes
- Exit Code 0: Absence of an attached foreground process
- Exit Code 1: Indicates failure due to application error
- Exit Code 137: Indicates failure as container received SIGKILL (Manual intervention or ‘oom-killer’ [OUT-OF-MEMORY])
- Exit Code 139: Indicates failure as container received SIGSEGV
- Exit Code 143: Indicates failure as container received SIGTERM