도커 컨테이너 생명주기
1. 생성 (Created)
docker create openjdk:17
- 이 명령은 컨테이너를 "생성"만 하고 실행은 하지 않는다.
- 상태:
Created- 내부에 실행할 명령이 없어 당장은 아무 일도 일어나지 않는다.
2. 실행 (Running)
docker run openjdk:17 java -jar app.jar
run은create + start와 같다.- 컨테이너가 실행되며
java -jar app.jar를 수행한다.- 애플리케이션이 실행 중이면 컨테이너 상태는
Running이다.반면, 아래처럼 실행할 명령이 없으면:
docker run openjdk:17
- 컨테이너 내부에 포그라운드에서 실행할 프로세스가 없어 바로 종료(Exited) 된다.
- 상태:
Exited
3. 정지 (Stopped / Exited)
- 실행 중인 컨테이너가
java프로세스 종료 등으로 끝나면, 자동으로 정지된다.- 또는 사용자가 수동으로 중단할 수 있다:
docker stop <컨테이너ID>
- 상태:
Exited
4. 재시작 (Restarting)
--restart정책이 적용된 컨테이너는 예외 종료 시 자동으로 재시작된다.docker run --restart=always openjdk:17 java -jar app.jar
- 애플리케이션이 비정상 종료될 경우 도커가 다시 실행한다.
- 상태:
Restarting→Running
5. 삭제 (Removed)
- 컨테이너가 더 이상 필요 없을 경우 삭제한다:
docker rm <컨테이너ID>
- 상태: 완전히 제거되어 존재하지 않음
요약 흐름도 (명령어 기준)
create → start → (실행 중: java -jar) → stop → rm ↓ (실행 명령 없으면 바로 종료)
ex)
- 애플리케이션이 실행 중이면 Running 상태
- 명령이 없거나, 실행이 끝나면 Exited 상태
- 명령이 무한 대기 상태면 계속 Running 유지
- 필요 시 다시 start 가능
- 더 이상 사용하지 않으면 rm으로 제거