소개
이 랩에서는 docker container kill 명령어를 사용하여 Docker 컨테이너를 관리하는 방법을 배우게 됩니다. 먼저 간단한 컨테이너를 생성하고 실행하는 것으로 시작합니다. 그런 다음, 기본 신호를 사용하여 실행 중인 컨테이너를 중지하는 방법을 살펴봅니다. 마지막으로, 컨테이너의 수명 주기를 제어하는 데 필수적인 기술을 제공하기 위해 사용자 지정 신호 (이름 및 번호) 를 사용하여 컨테이너를 종료하는 방법을 배우게 됩니다.
간단한 컨테이너 생성 및 실행
이 단계에서는 간단한 Docker 컨테이너를 생성하고 실행하는 방법을 배우게 됩니다. 컨테이너는 코드와 모든 종속성을 패키징하여 애플리케이션이 한 컴퓨팅 환경에서 다른 환경으로 빠르고 안정적으로 실행되도록 하는 표준 소프트웨어 단위입니다.
먼저 사용할 Docker 이미지를 가져와야 합니다. 최소한의 Ubuntu 운영 체제인 ubuntu 이미지를 사용합니다.
docker pull ubuntu
이 명령어는 Docker Hub 에서 ubuntu 이미지를 로컬 머신으로 다운로드합니다. 다운로드 진행 상황을 나타내는 출력을 볼 수 있습니다.
이제 이미지가 있으므로 이를 기반으로 컨테이너를 실행할 수 있습니다. 컨테이너 내에서 간단한 명령을 실행합니다.
docker run ubuntu echo "Hello from Docker!"
이 명령어를 자세히 살펴보겠습니다.
docker run: 새 컨테이너를 실행하는 명령어입니다.ubuntu: 사용하려는 이미지의 이름입니다.echo "Hello from Docker!": 컨테이너 내에서 실행될 명령어입니다.
이 명령어를 실행하면 Docker 는 ubuntu 이미지에서 새 컨테이너를 생성하고, 컨테이너 내에서 echo 명령을 실행한 다음 컨테이너가 중지됩니다. 터미널에서 Hello from Docker! 출력을 볼 수 있습니다.
실행된 컨테이너 (종료된 컨테이너 포함) 를 보려면 docker ps -a 명령어를 사용할 수 있습니다.
docker ps -a
이 명령어는 실행 중인 컨테이너와 중지된 컨테이너를 모두 나열합니다. 방금 실행한 컨테이너에 대한 항목이 "Exited" 상태로 표시됩니다.
기본 신호를 사용하여 실행 중인 컨테이너 종료
이전 단계에서는 명령을 실행한 다음 종료되는 컨테이너를 실행했습니다. 이 단계에서는 계속 실행되는 컨테이너를 실행한 다음 기본 신호를 사용하여 중지하는 방법을 배웁니다.
먼저 계속 실행될 컨테이너를 실행해 보겠습니다. 다시 ubuntu 이미지를 사용하지만, 이번에는 무한정 대기하는 명령을 실행합니다.
docker run -d ubuntu sleep infinity
명령어를 살펴보겠습니다.
docker run: 새 컨테이너를 실행하는 명령어입니다.-d: 이 플래그는 컨테이너를 detached 모드 (백그라운드에서 실행되며 터미널을 차단하지 않음) 로 실행합니다.ubuntu: 사용할 이미지입니다.sleep infinity: 컨테이너 내에서 실행할 명령어입니다.sleep infinity는 컨테이너가 무한정 실행되도록 하는 명령어입니다.
이 명령어를 실행하면 Docker 는 컨테이너 ID 를 출력합니다. 이 컨테이너는 이제 백그라운드에서 실행 중입니다.
실행 중인 컨테이너를 보려면 docker ps 명령어를 사용합니다.
docker ps
방금 시작한 컨테이너에 대한 항목이 "Up" 상태와 함께 실행된 기간이 표시됩니다. 이 컨테이너를 중지하는 데 필요하므로 이 컨테이너의 CONTAINER ID 또는 NAMES를 기록해 둡니다.
이제 docker kill 명령어를 사용하여 실행 중인 컨테이너를 중지해 보겠습니다. 기본적으로 docker kill은 SIGKILL 신호를 컨테이너의 주 프로세스에 보냅니다. SIGKILL은 프로세스를 즉시 종료하는 신호이며, 잡거나 무시할 수 없습니다.
<container_id_or_name>을 docker ps 출력에서 실행 중인 컨테이너의 실제 ID 또는 이름으로 바꿉니다.
docker kill <container_id_or_name>
이 명령어를 실행하면 컨테이너가 중지되어야 합니다. docker ps를 다시 실행하여 이를 확인할 수 있습니다. 컨테이너는 더 이상 실행 중인 컨테이너 목록에 나타나지 않아야 합니다.
중지된 컨테이너를 보려면 docker ps -a를 사용할 수 있습니다. 이제 상태가 "Exited"로 표시됩니다.
다른 컨테이너 생성 및 실행
이전 단계에서는 기본 신호를 사용하여 실행 중인 컨테이너를 종료했습니다. 이 단계에서는 사용자 지정 신호로 컨테이너를 종료하는 것을 시연하기 위해 다음 단계에서 사용할 다른 컨테이너를 생성하고 실행합니다.
이전과 마찬가지로 ubuntu 이미지와 sleep infinity 명령을 사용하여 detached 모드에서 다른 컨테이너를 실행합니다.
docker run -d ubuntu sleep infinity
이 명령어는 무한정 실행될 새 컨테이너를 백그라운드에서 시작합니다. Docker 는 새 컨테이너 ID 를 출력합니다.
컨테이너가 실행 중인지 확인하려면 docker ps 명령어를 사용합니다.
docker ps
"Up" 상태로 새 컨테이너가 나열되는 것을 볼 수 있습니다. 이 컨테이너의 CONTAINER ID 또는 NAMES를 기록해 둡니다. 다음 단계에서 다른 신호를 사용하여 컨테이너를 종료하는 데 이 ID 또는 이름을 사용합니다.
이 컨테이너는 이제 다양한 신호를 보내는 연습을 할 준비가 되었습니다.
이름으로 사용자 지정 신호를 사용하여 컨테이너 종료
이전 단계에서는 현재 실행 중인 컨테이너를 시작했습니다. 이 단계에서는 이름으로 지정된 특정 신호를 사용하여 이 컨테이너를 종료하는 방법을 배웁니다.
docker kill 명령어를 사용하면 컨테이너 내부의 주 프로세스에 특정 신호를 보낼 수 있습니다. 기본적으로 SIGKILL을 보내지만 다른 신호를 지정할 수 있습니다. 애플리케이션을 정상적으로 종료하는 데 사용되는 일반적인 신호는 SIGTERM입니다. SIGTERM은 프로세스에 종료를 요청하는 신호입니다. SIGKILL과 달리 프로세스는 SIGTERM을 잡아서 종료 전에 정리 작업을 수행할 수 있습니다.
먼저 docker ps를 사용하여 이전 단계에서 실행 중인 컨테이너의 ID 또는 이름을 식별합니다.
docker ps
이제 -s 플래그와 함께 docker kill 명령어를 사용하여 신호 이름을 지정합니다. SIGTERM을 사용합니다. <container_id_or_name>을 실행 중인 컨테이너의 실제 ID 또는 이름으로 바꿉니다.
docker kill -s SIGTERM <container_id_or_name>
이 명령어는 지정된 컨테이너의 주 프로세스에 SIGTERM 신호를 보냅니다. 컨테이너 내부의 애플리케이션이 SIGTERM을 처리하도록 설계된 경우, 정상적으로 종료를 시도합니다. SIGTERM을 처리하지 않거나 특정 시간 초과 내에 종료되지 않으면 Docker 는 결국 SIGKILL을 보내 강제 종료합니다.
컨테이너가 중지되었는지 확인하려면 docker ps를 다시 실행합니다.
docker ps
컨테이너는 더 이상 실행 중인 것으로 나열되지 않아야 합니다. docker ps -a를 사용하여 상태를 확인할 수도 있으며, "Exited"로 표시되어야 합니다.
번호로 사용자 지정 신호를 사용하여 컨테이너 종료
이전 단계에서는 신호 이름 (SIGTERM) 을 사용하여 컨테이너를 종료했습니다. 이 단계에서는 숫자로 지정된 신호를 사용하여 컨테이너를 종료하는 방법을 배웁니다.
각 신호에는 해당 숫자가 있습니다. 예를 들어, SIGKILL은 신호 9 이고 SIGTERM은 신호 15 입니다. kill -l 명령어를 사용하여 Linux 시스템에서 신호 목록과 해당 숫자를 찾을 수 있습니다.
kill -l
이 명령어는 신호 이름과 해당 숫자의 목록을 출력합니다.
이제 이전 단계와 유사하게 계속 실행될 다른 컨테이너를 실행해 보겠습니다.
docker run -d ubuntu sleep infinity
docker ps를 사용하여 이 새 실행 중인 컨테이너의 컨테이너 ID 또는 이름을 가져옵니다.
docker ps
이제 -s 플래그와 함께 docker kill 명령어를 사용하지만, 이번에는 이름 대신 신호 번호를 제공합니다. SIGKILL에 해당하는 신호 번호 9 를 사용해 보겠습니다. <container_id_or_name>을 실행 중인 컨테이너의 실제 ID 또는 이름으로 바꿉니다.
docker kill -s 9 <container_id_or_name>
이 명령어는 지정된 컨테이너의 주 프로세스에 SIGKILL 신호 (번호 9) 를 보냅니다. 앞서 언급했듯이 SIGKILL은 프로세스를 즉시 종료합니다.
컨테이너가 중지되었는지 확인하려면 docker ps를 다시 실행합니다.
docker ps
컨테이너는 더 이상 실행 중인 것으로 나열되지 않아야 합니다. docker ps -a를 사용하여 상태를 확인할 수도 있으며, "Exited"로 표시되어야 합니다.
신호 번호를 사용하는 것은 스크립팅이나 보내는 신호에 대해 정확해야 할 때 유용할 수 있습니다.
요약
이 Lab 에서는 docker container kill 명령어를 사용하여 Docker 컨테이너를 관리하는 기본적인 단계를 배웠습니다. ubuntu 이미지를 기반으로 하는 간단한 컨테이너를 생성하고 실행하여 시작했으며, 기본 명령을 실행하고 docker ps -a를 사용하여 종료된 상태를 관찰했습니다.
이어서 실행 중인 컨테이너를 종료하는 방법을 살펴보았습니다. 먼저 기본 신호를 사용하여 컨테이너를 종료하는 것을 시연한 다음, 사용자 지정 신호 이름과 해당 숫자 값을 모두 사용하여 컨테이너를 종료함으로써 docker container kill 명령어의 유연성을 더 탐구했습니다. 이러한 실습 경험은 Docker 컨테이너의 수명 주기를 제어하는 실용적인 지식을 제공했습니다.



