TIL

컨테이너 Exit 원인 명령어 정리

하얀잔디 2025. 11. 28. 22:25

도커 컨테이너 죽으면 Exit Code 하나로 대충 원인 유추 가능함
운영하면서 제일 많이 본 코드들 정리함

 

 

 

Exit 137 (제일 자주 나옴)

  • SIGKILL(9) 받았다는 뜻임
  • 원인 두 가지밖에 없음
    1. 헬스체크 실패 → Swarm/K8s가 강제 kill
    2. OOM(메모리 부족) → 커널이 kill
  • 공통점: 둘 다 강제 종료라 137로 뜸
  • 운영에서 spike 나면 대부분 이거 뜸

 

 

 Exit 143 (정상 종료)

  • SIGTERM(15) 받았다는 뜻
  • docker stop, rolling update 때 자주 뜸
  • 정상 종료라 문제 아님
  • 업데이트나 재배포 시 거의 무조건 143 찍힘

 

 

!!  Exit 1 (앱 내부 오류)

  • Generic error
  • 내부 코드 예외, 설정 파일 오류, DB 연결 실패, 포트 충돌 등
  • Node.js에서 throw 안 잡히면 바로 exit 1 됨
  • 로그 보면 바로 원인 나오는 유형

 

 

 Exit 139 (segmentation fault)

  • native addon, glibc 문제, 메모리 접근 오류 등
  • Node 앱에서 sharp, canvas 등 C++ addon 쓰면 종종 뜸
  • 컨테이너 자체 문제라면 이미지 빌드 단계부터 확인해야 함

 

 

 Exit 0 (정상 종료)

  • 그냥 정상 종료
  • 수동 stop, graceful shutdown 등

 

 

 Exit 126 (권한 문제)

  • 실행 권한 없음
  • entrypoint.sh 퍼미션 안 줬을 때 자주 뜸
  • 또는 exec format error

 

 

 Exit 127 (명령어 없음)

  • entrypoint 잘못됨
  • PATH 문제
  • 실행할 파일이 아예 없음

 

 

 

 운영에서 특히 자주 보는 Top 4

  1. 137 → 강제 종료(헬스체크 실패 or OOM)
  2. 143 → 정상 종료(업데이트/stop)
  3. 1 → 앱 내부 오류(DB/Redis/코드 예외)
  4. 139 → native crash