본문 바로가기

Program

Docker Container Kill : 컨테이너를 즉시 종료하거나 원하는 시그널로 조절하는 고급 도커 명령어!

반응형

컨테이너를 강제로 종료하거나 특정 시그널을 전달하고자 할 때 필수로 알아야 할 명령어입니다.


🛑 docker container kill 명령어 완전 정복

컨테이너를 즉시 종료하거나 원하는 시그널로 조절하는 고급 도커 명령어!


 

 

📌 개요

docker container kill은 실행 중인 컨테이너에 종료 시그널(SIGNAL)을 전송하여 강제로 종료하는 CLI 명령어입니다.
기본적으로는 SIGKILL 시그널을 보내 즉시 중단시키며, SIGTERM, SIGINT 등 원하는 시그널을 지정하여 보낼 수도 있습니다.

⚠️ docker stop은 종료까지 유예 시간이 있지만, docker kill은 즉시 종료입니다.


✅ 기본 문법

docker container kill [OPTIONS] CONTAINER [CONTAINER...]

혹은 짧게:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

예시:

docker kill mycontainer

→ mycontainer라는 컨테이너에 SIGKILL을 전송하여 즉시 종료


🔧 옵션 설명

옵션 설명

--signal, -s 보낼 시그널을 지정 (기본값: SIGKILL)

예시: SIGTERM 전송

docker kill -s SIGTERM mycontainer

→ 정상 종료를 유도할 수 있음 (trap으로 처리하는 경우 유용)


⚙️ 주요 시그널 종류

시그널 설명

SIGKILL 즉시 종료 (kill -9)
SIGTERM 종료 요청 (애플리케이션에 유예 시간 제공)
SIGINT Ctrl+C 시그널
SIGHUP 재시작 요청
SIGUSR1, SIGUSR2 사용자 정의 신호 (프로세스에 따라 다르게 사용 가능)

💡 docker stop과의 차이점

항목 docker stop docker kill

기본 시그널 SIGTERM 후 10초 뒤 SIGKILL SIGKILL (기본)
유예 시간 있음 (10초 기본) 없음 (즉시 종료)
권장 용도 정상 종료 시도 응답 없는 컨테이너 강제 종료

즉, stop은 온화한 종료, kill은 무자비한 종료라고 생각하시면 됩니다.


🧪 실전 예시

1. 여러 컨테이너 동시 종료

docker kill web1 web2 worker

2. 컨테이너에 사용자 정의 시그널 보내기

docker kill -s SIGUSR1 myapp

→ 앱이 SIGUSR1을 trap하고 로그를 내보내거나 리로드할 수도 있음


3. 포그라운드 실행 중인 컨테이너 종료

docker run --name test-nginx -d nginx
docker kill test-nginx

🧠 언제 쓰면 좋을까?

  • 컨테이너가 응답하지 않고 멈춰버렸을 때
  • 특정 시그널을 컨테이너 안 애플리케이션에 전달할 때
  • stop 명령어가 제대로 동작하지 않을 때
  • CI/CD 환경에서 비정상 상태의 컨테이너를 정리하고자 할 때

반응형

 

⚠️ 주의사항

항목 설명

실행 중이 아닌 컨테이너에는 사용할 수 없음 running 상태일 때만 가능
데이터 손실 가능성 종료 전에 flush하지 못한 데이터는 사라질 수 있음
상태 확인 필요 종료 후 docker ps -a로 상태 확인 필수

🔄 상태 확인 명령어

docker ps -a --filter "name=mycontainer"

또는 상태 코드 확인:

docker inspect -f '{{ .State.ExitCode }}' mycontainer

📦 관련 명령어 비교

명령어 설명

docker stop 컨테이너를 종료 (우아하게)
docker kill 컨테이너를 강제 종료
docker exec 컨테이너 안에서 명령 실행
docker inspect 컨테이너 상태 상세 조회
docker logs 실행 중인 로그 확인

✅ 결론

docker container kill은 평소에는 자주 쓰지 않지만, **컨테이너가 말 안 들을 때 반드시 필요한 “비상 버튼”**입니다.
또한, 단순 종료뿐 아니라 시그널 제어를 통해 애플리케이션 동작을 유도하거나 커스텀 로직 실행도 가능하므로 DevOps 환경에서 필수 도구로 자리 잡고 있습니다.

🚨 언제나 kill은 마지막 수단! stop으로 안 될 때만 사용하세요.


 

 

Docker Container Inspect : 실행중인 컨테이너의 상세 정보를 알고 싶다.

 

Docker Container Inspect : 실행중인 컨테이너의 상세 정보를 알고 싶다.

컨테이너 상태, 설정, IP 주소 등 모든 내부 정보를 JSON 형태로 추출하고 싶을 때 사용하는 필수 명령어입니다.🧐 docker container inspect 완전 정복컨테이너 내부 정보, JSON으로 샅샅이 확인해보자!

jjig810906.tistory.com

 

반응형