docker container stop
docker container stop
docker container stop은 하나 이상의 실행 중인 컨테이너를 중지하는 명령이에요. 컨테이너를 제거하지 않고 멈추고 싶을 때 써요.
출처: 문서
본문
컨테이너 안의 메인 프로세스는 SIGTERM을 받고, 유예 기간(grace period) 후에 SIGKILL을 받아요. 첫 신호는 컨테이너의 Dockerfile의 STOPSIGNAL 지시문이나 docker run·docker create의 --stop-signal 옵션으로 바꿀 수 있어요.
사용법 (Usage)
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
별칭 (Aliases)
별칭은 긴 명령 대신 쓸 수 있는 짧고 기억하기 쉬운 대안이에요.
docker stop
옵션 (Options)
| 옵션 | 기본값 | 설명 |
|---|---|---|
-s, --signal |
컨테이너에 보낼 신호예요 | |
-t, --timeout |
컨테이너를 종료하기 전에 기다릴 시간(초)이에요 |
예제 (Examples)
$ docker stop my_container
신호로 컨테이너 중지하기 (-s, --signal)
--signal 플래그는 컨테이너가 종료되도록 시스템 콜 신호를 보내요. 이 신호는 SIG<NAME> 형식의 신호 이름(예: SIGKILL)이거나, 커널의 syscall 테이블 위치에 해당하는 부호 없는 숫자(예: 9)일 수 있어요. 사용 가능한 신호는 signal(7)을 참고해요.
기본적으로 사용할 신호는 이미지의 StopSignal로 정의돼요. 이는 이미지를 빌드할 때 STOPSIGNAL Dockerfile 지시문으로 설정하거나, 컨테이너를 만들 때 --stop-signal 옵션으로 구성할 수 있어요. 컨테이너에 신호가 구성되지 않으면 기본으로 SIGTERM이 사용돼요.
제한 시간으로 컨테이너 중지하기 (-t, --timeout)
--timeout 플래그는 사전 정의된(--signal) 시스템 콜 신호를 보낸 뒤 컨테이너가 중지할 때까지 기다릴 시간(초)을 설정해요. 제한 시간이 지나도 컨테이너가 종료되지 않으면 SIGKILL 신호로 강제 종료돼요. --timeout을 -1로 설정하면 제한 시간이 적용되지 않고 데몬이 컨테이너가 종료될 때까지 무기한 기다려요.
기본 제한 시간은 컨테이너를 만들 때 --stop-timeout 옵션으로 지정할 수 있어요. 컨테이너에 기본값이 구성되지 않으면 데몬이 결정하는데, Linux 컨테이너는 10초, Windows 컨테이너는 30초예요.