컨테이너 생명주기 (Container Lifecycle)
컨테이너는 만들어졌다가 사라지는 하나의 프로세스이고, 그 사이를 Created·Running·Paused·Exited 상태로 오갑니다. `docker run` 은 사실 create 와 start 를 합친 명령이고, `stop` 은 SIGTERM 을 먼저 보낸 뒤 기다렸다가 SIGKILL 로 강제 종료합니다. 어떤 명령이 어떤 전이를 일으키는지 알면 데이터가 언제 사라지는지도 함께 보입니다.
01 개념 한눈에 보기
Interactive Step-by-Step컨테이너는 결국 하나의 프로세스입니다. 만들어졌다가 사라지기까지 몇 개의 상태를 오갑니다.
02 쉽게 이해하기
For Everyone자동차와 같습니다. 차를 사서 주차장에 두는 것이 create(Created), 시동을 걸면 start(Running), 잠깐 세워두면 pause, 시동을 끄면 stop(Exited)입니다. 폐차(rm)하기 전까지 차는 그대로 남아 있습니다.
create 는 이미지로부터 컨테이너를 만들기만 하고 실행하지 않습니다(Created).
start 로 프로세스가 뜨면 Running, stop 은 SIGTERM → (기본 10초 대기) → SIGKILL 순서로 종료해 Exited 가 됩니다.
Exited 상태의 컨테이너는 쓰기 레이어를 그대로 갖고 있어 restart 하면 데이터가 남아 있지만, rm 으로 지우는 순간 그 레이어도 함께 사라집니다.
- –graceful shutdown 설계(SIGTERM 핸들링)
- –종료 코드로 장애 원인 파악
- –재시작 정책 설정
- –컨테이너 데이터가 사라지는 시점 이해
03 자주 묻는 질문
FAQ컨테이너 생명주기 (Container Lifecycle)란 무엇인가요?+
컨테이너는 만들어졌다가 사라지는 하나의 프로세스이고, 그 사이를 Created·Running·Paused·Exited 상태로 오갑니다. `docker run` 은 사실 create 와 start 를 합친 명령이고, `stop` 은 SIGTERM 을 먼저 보낸 뒤 기다렸다가 SIGKILL 로 강제 종료합니다. 어떤 명령이 어떤 전이를 일으키는지 알면 데이터가 언제 사라지는지도 함께 보입니다.
컨테이너 생명주기 (Container Lifecycle)은(는) 어디에 사용하나요?+
graceful shutdown 설계(SIGTERM 핸들링), 종료 코드로 장애 원인 파악, 재시작 정책 설정, 컨테이너 데이터가 사라지는 시점 이해
컨테이너 생명주기 (Container Lifecycle)를 쉽게 비유하면?+
자동차와 같습니다. 차를 사서 주차장에 두는 것이 create(Created), 시동을 걸면 start(Running), 잠깐 세워두면 pause, 시동을 끄면 stop(Exited)입니다. 폐차(rm)하기 전까지 차는 그대로 남아 있습니다.
