Docker Kill 사용법 완벽 가이드! 실행 중인 컨테이너 강제 종료하기

Docker를 운영하다 보면 컨테이너가 정상적으로 종료되지 않는 상황을 종종 경험하게 됩니다. 애플리케이션이 응답하지 않거나 무한 루프에 빠졌을 때, 또는 docker stop 명령을 실행했지만 일정 시간이 지나도 종료되지 않는 경우가 대표적인 예입니다.

이럴 때 사용하는 명령어가 바로 docker kill입니다.

Docker Kill은 실행 중인 컨테이너에 강제 종료 신호(Signal)를 보내 즉시 종료하는 명령어입니다. 일반적으로 SIGKILL 신호를 전송하여 컨테이너를 즉시 종료하며, 필요에 따라 다른 Linux Signal도 지정할 수 있습니다.

이번 글에서는 Docker Kill의 개념부터 기본 사용법, Docker Stop과의 차이점, Signal 지정 방법, 실무 활용 사례까지 자세히 알아보겠습니다.

Docker Kill이란 무엇인가?

Docker Kill은 실행 중인 컨테이너에 종료 신호를 보내 강제로 종료하는 명령어입니다.

기본적으로 SIGKILL 신호를 전송하기 때문에 애플리케이션이 종료 작업을 수행할 시간을 주지 않고 즉시 종료됩니다.

응답하지 않는 컨테이너를 빠르게 종료해야 하는 상황에서 사용하는 명령어입니다.

Docker Kill은 언제 사용하는가?

다음과 같은 상황에서 많이 사용됩니다.

  • 컨테이너 강제 종료
  • 무한 루프 발생
  • 애플리케이션 응답 없음
  • Stop 명령 실패
  • 긴급 장애 대응
  • 시스템 리소스 회수

운영 환경에서는 반드시 필요한 경우에만 사용하는 것이 좋습니다.

Docker Kill 기본 사용법

기본 명령어는 다음과 같습니다.

docker kill <컨테이너명>

예를 들어 web-server 컨테이너를 강제 종료하려면 다음과 같이 입력합니다.

docker kill web-server

정상적으로 종료되면 컨테이너 이름이 출력됩니다.

web-server

컨테이너는 즉시 종료됩니다.

종료 상태 확인

현재 상태는 다음 명령으로 확인합니다.

docker ps -a

출력 예시입니다.

CONTAINER ID   IMAGE   STATUS
2d8b71ab34c9   nginx   Exited (137)

종료 코드 137은 일반적으로 SIGKILL에 의해 종료되었음을 의미합니다.

특정 Signal 사용하기

기본적으로는 SIGKILL을 사용하지만 다른 Signal도 지정할 수 있습니다.

예를 들어 SIGTERM을 보내려면 다음과 같이 입력합니다.

docker kill --signal=SIGTERM web-server

또는 약식으로 사용할 수도 있습니다.

docker kill -s SIGTERM web-server

필요에 따라 다양한 Linux Signal을 사용할 수 있습니다.

여러 컨테이너 동시에 종료

여러 개의 컨테이너를 한 번에 종료하는 것도 가능합니다.

docker kill nginx api redis

지정한 모든 컨테이너가 즉시 종료됩니다.

Docker Kill과 Docker Stop의 차이

Docker Kill과 Docker Stop은 모두 컨테이너를 종료하지만 방식이 다릅니다.

Docker KillDocker Stop
즉시 강제 종료정상 종료 요청
기본 SIGKILL 사용SIGTERM 후 SIGKILL
종료 작업 수행 불가종료 작업 수행 가능
긴급 상황에서 사용일반적인 종료 방법

가능하면 먼저 Docker Stop을 사용하고, 종료되지 않을 때 Docker Kill을 사용하는 것이 권장됩니다.

Docker Kill 실무 활용 예제

Docker Kill은 응답하지 않는 컨테이너를 즉시 종료해야 하는 긴급 상황에서 사용하는 명령어입니다. 정상적인 운영에서는 Docker Stop을 우선 사용하고, 종료되지 않을 때만 Docker Kill을 사용하는 것이 좋습니다.

응답하지 않는 컨테이너 강제 종료

애플리케이션이 멈춰 Docker Stop으로도 종료되지 않는 경우입니다.

docker kill web-server

컨테이너는 즉시 종료됩니다.

상태를 확인합니다.

docker ps -a

출력 예시입니다.

CONTAINER ID   IMAGE   STATUS
3b71ab82d4ef   nginx   Exited (137)

종료 코드 137은 SIGKILL 신호로 종료되었음을 의미합니다.

여러 컨테이너 긴급 종료

시스템 과부하가 발생한 경우 여러 컨테이너를 동시에 종료할 수 있습니다.

docker kill api-server web-server redis-server

모든 컨테이너가 즉시 종료됩니다.

SIGTERM 신호 보내기

강제 종료 대신 종료 신호만 보내고 싶은 경우입니다.

docker kill --signal=SIGTERM web-server

애플리케이션이 SIGTERM을 처리하도록 구현되어 있다면 정상 종료를 수행할 수 있습니다.

Signal 번호 사용

Signal 이름 대신 번호를 사용할 수도 있습니다.

docker kill -s 9 web-server

9번 Signal은 SIGKILL과 동일합니다.

Linux 서버 문제 해결

운영 중인 API 서버가 무한 루프에 빠져 CPU를 계속 사용하는 상황이 발생했습니다.

먼저 정상 종료를 시도했습니다.

docker stop api-server

하지만 일정 시간이 지나도 종료되지 않았습니다.

현재 상태를 확인했습니다.

docker ps

컨테이너는 여전히 실행 중이었습니다.

긴급하게 서비스를 종료하기 위해 Docker Kill을 실행했습니다.

docker kill api-server

즉시 CPU 사용률이 정상으로 돌아왔고 시스템 전체 성능도 회복되었습니다.

이후 로그를 확인하여 원인을 분석했습니다.

docker logs api-server

무한 반복되는 애플리케이션 오류를 수정한 뒤 컨테이너를 다시 실행하여 문제를 해결했습니다.

Docker Kill 사용 시 주의사항

Docker Kill을 사용할 때는 다음 사항을 알아두는 것이 좋습니다.

첫 번째는 정상 종료 절차를 수행하지 않는다는 점입니다.

애플리케이션이 종료 전에 데이터를 저장해야 하는 경우 데이터 손실이 발생할 수 있습니다.

두 번째는 진행 중인 작업이 모두 중단됩니다.

파일 저장이나 데이터베이스 작업이 완료되지 않을 수 있습니다.

세 번째는 가능한 경우 Docker Stop을 먼저 사용하는 것이 좋습니다.

Docker Stop으로 종료되지 않는 경우에만 Docker Kill을 사용하는 것이 권장됩니다.

네 번째는 운영 환경에서는 사용 이력을 확인하는 것이 좋습니다.

반복적으로 Docker Kill을 사용해야 한다면 애플리케이션 자체의 문제를 점검해야 합니다.

Best Practice

Docker Kill을 사용할 때는 다음과 같은 방법을 추천합니다.

  • 먼저 Docker Stop을 시도합니다.
  • 응답하지 않는 경우에만 Docker Kill을 사용합니다.
  • 종료 후 Docker Logs를 확인하여 원인을 분석합니다.
  • 반복적인 강제 종료가 발생하면 애플리케이션을 점검합니다.
  • 운영 서버에서는 강제 종료 전 영향 범위를 확인합니다.
  • 종료 후 필요한 경우 Docker Restart로 서비스를 복구합니다.

이러한 방법을 적용하면 운영 환경에서도 안전하게 컨테이너를 관리할 수 있습니다.

자주 묻는 질문

Docker Kill과 Docker Stop 중 무엇을 먼저 사용해야 하나요?

일반적으로 Docker Stop을 먼저 사용합니다.

Docker Stop으로 종료되지 않을 때만 Docker Kill을 사용하는 것이 권장됩니다.

Docker Kill을 사용하면 데이터가 손실될 수 있나요?

가능합니다.

강제 종료이므로 저장되지 않은 데이터는 손실될 수 있습니다.

종료 코드 137은 무엇을 의미하나요?

일반적으로 SIGKILL 신호에 의해 강제로 종료되었음을 의미합니다.

Docker Kill 후 컨테이너를 다시 실행하려면 어떻게 하나요?

다음 명령을 사용합니다.

docker start web-server

또는 재시작하려면 다음 명령을 사용할 수 있습니다.

docker restart web-server

마무리

Docker Kill은 실행 중인 컨테이너를 즉시 강제 종료하는 명령어로, 응답하지 않는 컨테이너나 긴급 장애 상황에서 매우 유용하게 사용할 수 있습니다.

하지만 정상 종료 절차를 거치지 않기 때문에 데이터 손실이나 작업 중단이 발생할 수 있으므로, 일반적인 운영에서는 Docker Stop을 우선 사용하고 Docker Kill은 최후의 수단으로 사용하는 것이 좋습니다.

Docker Kill과 Docker Logs, Docker Restart를 함께 활용하면 긴급 상황에서도 빠르게 장애를 해결하고 서비스를 복구할 수 있습니다.

댓글 남기기