도커 컨테이너 생명주기
(1) docker stop vs docker kill
[docker stop → SIGTERM → SIGKILL → main process]
docker stop은 sigterm을 사용해서 리소스 해제, 상태 저장 등 시스템 종료를 위해 프로세스가 정리하는 시간을 준 후 sigkill 을 사용해서 컨테이너를 멈춘다.
[docker kill → SIGKILL → main process]
docker kill은 sigterm을 사용하지 않고 즉각 컨테이너를 멈춘다.
* signal(신호)
일반적으로 Unix, Unix 계열 및 기타 POSIX 호환 운영 체제에서 사용되는 제한된 형태의 프로세스 간 통신 (IPC)이다. 이벤트를 알리기 위해 프로세스 또는 동일한 프로세스 내의 특정 스레드로 전송되는 비동기 알림이다. 1970 년대 Bell Labs Unix에서 시작되었으며 나중에 POSIX 표준에 지정되었다.
* SIGTERM
SIGTERM 신호는 프로세스의 종료를 요청하기 위해 해당 프로세스에 전송된다. SIGKILL 신호와 달리 프로세스가 차단하거나 무시할 수 있다. 이를 통해 프로세스는 리소스를 해제하고 필요한 경우 상태를 저장하는 훌륭한 종료를 할 수 있다. 프로그램을 종료하도록 정중하게 요청하는 방법이다.
* SIGKILL
SIGKILL 신호는 프로그램을 즉시 종료하는 데 사용된다. 차단하거나 무시할 수 없으므로 항상 치명적이다. 이 신호는 차단할 수도 없다.
(2) docker run vs docker exec
컨테이너에 명령어를 전달할 때 사용하는 run과 exec에는 아래의 차이점이 있다.
- [docker run]은 새로운 컨테이너를 만들어서 실행한다.
- [docker exec]은 이미 실행중인 컨테이너에 명령어를 전달한다.
[참고]
- Signal(IPC), Wikipedia, https://en.wikipedia.org/wiki/Signal_(IPC)
- Termination Signals, GNU, https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html
'DevOps > Docker' 카테고리의 다른 글
[도커]도커에서 레디스 사용하기 (0) | 2021.06.13 |
---|---|
[도커]docker image rm vs docker rmi (0) | 2021.06.04 |
[도커]네트워킹 (0) | 2021.06.02 |
[도커]데이터 관리(Bind Mount, Volume, Tmpfs Mount) (0) | 2021.05.31 |
[도커]명령어 모음 (0) | 2021.05.31 |