[Docker] 도커 컨테이너의 Lifecycle

smlee·2023년 9월 25일
0

Docker

목록 보기
1/2
post-thumbnail


Docker container lifecycle은 위와 같다.

터미널에서의 docker command와 함께 Lifecycle을 정리하면 다음과 같다.

Commanddescription
docker created image [command]도커 컨테이너를 생성한다. (Stop 상태의 도커 컨테이너가 생성된다.)
docker run image [command]도커 컨테이너를 Run시킨다. 이때, run은 createstart가 합쳐진 것이다.
docker start containerStop 상태의 컨테이너를 Running 상태로 작동시킨다.
docker stop container컨테이너를 graceful stop시키는 명령어이다.
docker kill containerSIGKILL 신호를 보내 컨테이너를 죽인다.
docker restart containerstopstart를 하는 명령어로써, running 상태의 컨테이너를 Stop 상태로 전환한다음 다시 start하여 컨테이너를 running 상태로 바꾼다.
docker pause containerRunning 상태의 컨테이너를 pause 상태로 전환한다.
docker unpause containerpause 상태의 컨테이너를 다시 running 상태로 전환한다.
docker rm [-f] containerstop 상태의 컨테이너를 rm을 통해 dead(deleted) 상태로 전환시킨다.

graceful shutdown
graceful shut down은 종료시킬 때 최대한 side effect가 없도록 로직들을 잘 처리하고 종료하는 것을 뜻한다. graceful shutdown은 hard shutdown과 반대되는 것을 뜻한다.
graceful shutdown이 구현되기 위해서는 프로그램을 종료하라는 유닉스 신호를 catch하여 로직을 처리하는 형태로 구현된다. 즉, SIGINT와 SIGTERM이 catch가 가능하므로 이를 사용한다. (SIGKILL은 catch하지 못한다.)

  • SIGKILL : 프로세스는 이 시그널을 받았는지 모르므로 무엇인가를 하거나 무시하는 행동을 할 수 없다. 따라서 이러한 행위는 "not graceful"하다고 판단되며, docker kill과 연관된다.
  • SIGTERM : 프로세스가 이 시그널을 받으면, cleanup을 실행한다. 따라서 "graceful"하다고 볼 수 있다.

Reference

0개의 댓글