본문 바로가기

Program

Docker docker container stop 명령어 완전 정복: 예제와 함께 알아보기

반응형

 

Docker docker container stop 명령어 완전 정복: 예제와 함께 알아보기

도커(Docker)를 사용하다 보면, 실행 중인 컨테이너를 안전하게 종료해야 할 일이 종종 발생합니다. 이때 사용하는 명령어가 바로 docker container stop입니다. 이번 글에서는 이 명령어의 기본 개념부터 사용 방법, 옵션, 실무에서 자주 쓰이는 예제까지 자세히 알아보겠습니다.


🧠 docker container stop이란?

docker container stop 명령어는 실행 중인 컨테이너를 종료(stop) 시키는 데 사용됩니다. 단순히 컨테이너를 "죽인다(kill)"는 개념보다는, 시그널(SIGTERM)을 보내서 안전하게 종료시키는 역할을 합니다.

docker container stop [OPTIONS] CONTAINER [CONTAINER...]
  • CONTAINER: 종료할 컨테이너의 이름 또는 ID입니다.
  • 여러 개의 컨테이너도 동시에 지정하여 중지할 수 있습니다.

⏱ 옵션 설명

옵션 설명

-t, --time 종료 전 컨테이너에 SIGTERM을 보낸 후, SIGKILL까지 기다릴 시간을 초 단위로 지정합니다. 기본값은 10초입니다.

예를 들어, 컨테이너가 SIGTERM 신호를 받고 종료 준비를 할 시간을 20초로 늘리고 싶다면 다음과 같이 명령어를 입력합니다.

docker container stop -t 20 my_container

🔧 기본 사용 예제

1. 컨테이너 1개 중지하기

docker container stop web_app

web_app이라는 이름의 컨테이너를 종료합니다. 이 명령은 SIGTERM → SIGKILL 순서로 신호를 보내며, 기본적으로 10초 동안 종료를 기다립니다.


2. 컨테이너 여러 개 중지하기

docker container stop web_app db redis

3개의 컨테이너를 동시에 중지합니다. 각각의 컨테이너에 SIGTERM이 전송되며, 순차적으로 종료됩니다.


3. docker ps와 함께 사용하기

현재 실행 중인 모든 컨테이너를 중지하려면 다음과 같이 활용할 수 있습니다:

docker stop $(docker ps -q)
  • docker ps -q: 실행 중인 컨테이너 ID만 출력
  • docker stop: 해당 ID들에 대해 stop 명령을 수행

이 명령어는 현재 실행 중인 모든 컨테이너를 한 번에 중지시킬 때 매우 유용합니다.


⚠️ stop vs kill의 차이

명령어 설명 신호

docker stop 안전하게 컨테이너를 종료 (종료 준비 시간 줌) SIGTERM → SIGKILL
docker kill 즉시 종료 (강제 종료) SIGKILL
  • stop은 정상 종료를 유도하므로, 파일 저장 또는 세션 정리 등의 작업을 수행할 시간이 있습니다.
  • 반면, kill은 컨테이너를 강제로 종료하므로 데이터 손실 우려가 있으니 주의하세요.

💡 실전 팁: 자동 종료 스크립트 작성

개발 환경에서 매일 컨테이너를 자동으로 종료해야 한다면 Bash 스크립트를 활용할 수 있습니다.

#!/bin/bash
echo "모든 컨테이너 중지 중..."
docker stop $(docker ps -q)
echo "완료!"

위 스크립트를 stop_all.sh로 저장한 뒤 실행 권한을 주고 사용할 수 있습니다:

chmod +x stop_all.sh
./stop_all.sh

✅ 정리

  • docker container stop은 컨테이너를 안전하게 종료하는 데 사용합니다.
  • SIGTERM을 먼저 보내고, 지정한 시간이 지나도 종료되지 않으면 SIGKILL로 강제 종료됩니다.
  • -t 옵션으로 종료 대기 시간을 조절할 수 있습니다.
  • docker ps -q와 함께 쓰면 여러 컨테이너를 한 번에 종료할 수 있습니다.
  • 데이터 손실 없이 종료하고 싶다면 stop, 긴급한 상황이라면 kill을 사용하세요.

 

반응형