Docker container lifecycle은 위와 같다.
터미널에서의 docker command와 함께 Lifecycle을 정리하면 다음과 같다.
Command | description |
---|---|
docker created image [command] | 도커 컨테이너를 생성한다. (Stop 상태의 도커 컨테이너가 생성된다.) |
docker run image [command] | 도커 컨테이너를 Run시킨다. 이때, run은 create 와 start 가 합쳐진 것이다. |
docker start container | Stop 상태의 컨테이너를 Running 상태로 작동시킨다. |
docker stop container | 컨테이너를 graceful stop 시키는 명령어이다. |
docker kill container | SIGKILL 신호를 보내 컨테이너를 죽인다. |
docker restart container | stop 과 start 를 하는 명령어로써, running 상태의 컨테이너를 Stop 상태로 전환한다음 다시 start 하여 컨테이너를 running 상태로 바꾼다. |
docker pause container | Running 상태의 컨테이너를 pause 상태로 전환한다. |
docker unpause container | pause 상태의 컨테이너를 다시 running 상태로 전환한다. |
docker rm [-f] container | stop 상태의 컨테이너를 rm을 통해 dead(deleted) 상태로 전환시킨다. |
graceful shutdown
graceful shut down은 종료시킬 때 최대한 side effect가 없도록 로직들을 잘 처리하고 종료하는 것을 뜻한다. graceful shutdown은 hard shutdown과 반대되는 것을 뜻한다.
graceful shutdown이 구현되기 위해서는 프로그램을 종료하라는 유닉스 신호를 catch하여 로직을 처리하는 형태로 구현된다. 즉, SIGINT와 SIGTERM이 catch가 가능하므로 이를 사용한다. (SIGKILL은 catch하지 못한다.)
docker kill
과 연관된다.cleanup
을 실행한다. 따라서 "graceful"하다고 볼 수 있다.