Docker - 생명주기

2경빈·2025년 5월 8일

Docker

목록 보기
2/6

도커 컨테이너 생명주기

1. 생성 (Created)

docker create openjdk:17
  • 이 명령은 컨테이너를 "생성"만 하고 실행은 하지 않는다.
  • 상태: Created
  • 내부에 실행할 명령이 없어 당장은 아무 일도 일어나지 않는다.

2. 실행 (Running)

docker run openjdk:17 java -jar app.jar
  • runcreate + 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
  • 애플리케이션이 비정상 종료될 경우 도커가 다시 실행한다.
  • 상태: RestartingRunning

5. 삭제 (Removed)

  • 컨테이너가 더 이상 필요 없을 경우 삭제한다:
docker rm <컨테이너ID>
  • 상태: 완전히 제거되어 존재하지 않음

요약 흐름도 (명령어 기준)

create → start → (실행 중: java -jar) → stop → rm
                          ↓
              (실행 명령 없으면 바로 종료)

ex)

  • 애플리케이션이 실행 중이면 Running 상태
  • 명령이 없거나, 실행이 끝나면 Exited 상태
  • 명령이 무한 대기 상태면 계속 Running 유지
  • 필요 시 다시 start 가능
  • 더 이상 사용하지 않으면 rm으로 제거
profile
eggs before hatching

0개의 댓글