소개
이 튜토리얼에서는 Docker 컨테이너를 안전하게 중지하고 제거하는 방법을 안내합니다. 초보 사용자이든 숙련된 Docker 사용자이든, 컨테이너의 수명주기를 관리하는 방법을 이해하는 것은 건강하고 효율적인 컨테이너화된 환경을 유지하는 데 필수적입니다. Docker 컨테이너를 종료하고 애플리케이션이 원활하게 실행되도록 하는 단계를 살펴보겠습니다.
이 튜토리얼에서는 Docker 컨테이너를 안전하게 중지하고 제거하는 방법을 안내합니다. 초보 사용자이든 숙련된 Docker 사용자이든, 컨테이너의 수명주기를 관리하는 방법을 이해하는 것은 건강하고 효율적인 컨테이너화된 환경을 유지하는 데 필수적입니다. Docker 컨테이너를 종료하고 애플리케이션이 원활하게 실행되도록 하는 단계를 살펴보겠습니다.
Docker 는 개발자가 일관되고 재현 가능한 방식으로 애플리케이션을 패키징하고 배포할 수 있도록 하는 인기 있는 컨테이너화 플랫폼입니다. 컨테이너는 애플리케이션과 그 종속성을 캡슐화하는 경량, 독립적, 그리고 자체 포함된 단위로, Docker 가 설치된 모든 시스템에서 애플리케이션을 쉽게 실행할 수 있도록 합니다.
Docker 컨테이너는 Docker 이미지에서 생성됩니다. 이미지는 본질적으로 컨테이너의 내용을 정의하는 템플릿입니다. 이러한 이미지는 처음부터 만들거나 Docker 커뮤니티 또는 자체 조직에서 제공하는 기존 이미지를 기반으로 만들 수 있습니다.
Docker 컨테이너를 실행하면 이미지에 정의된 애플리케이션의 새로운 인스턴스가 생성됩니다. 각 컨테이너는 호스트 시스템과 다른 컨테이너로부터 분리되어, 기본 인프라에 관계없이 애플리케이션이 일관되고 예측 가능하게 실행되도록 합니다.
Docker 컨테이너는 애플리케이션 배포 및 개발에 인기 있는 선택이 되는 여러 가지 장점을 제공합니다.
Docker 컨테이너를 생성하고 실행하려면 docker run 명령어를 사용할 수 있습니다. 예를 들어, Ubuntu 22.04 컨테이너를 실행하려면 다음 명령어를 사용할 수 있습니다.
docker run -it ubuntu:22.04 /bin/bash
이 명령어는 Docker Hub 레지스트리에서 ubuntu:22.04 이미지를 가져오고, 새로운 컨테이너를 생성하며, 컨테이너 내에서 대화형 쉘 세션을 시작합니다.
컨테이너 내부에서 애플리케이션을 설치하고 실행할 수 있으며, 종속성과 구성을 관리할 수 있습니다. 작업이 끝나면 exit 명령어를 입력하여 컨테이너를 종료할 수 있습니다.
실행 중인 Docker 컨테이너를 중지할 때는 잠재적인 문제를 방지하기 위해 안전하고 통제된 방식으로 수행하는 것이 중요합니다. Docker 는 컨테이너를 원활하게 중지하기 위한 여러 명령어와 옵션을 제공합니다.
실행 중인 Docker 컨테이너를 중지하려면 docker stop 명령어를 사용할 수 있습니다. 이 명령어는 컨테이너의 주 프로세스에 SIGTERM 신호를 보내 컨테이너가 중지되기 전에 필요한 정리 또는 종료 작업을 수행할 수 있도록 합니다.
docker stop <컨테이너_이름_또는_ID>
기본적으로 docker stop 명령어는 컨테이너가 중지될 때까지 최대 10 초 동안 대기합니다. 컨테이너가 그 시간 내에 중지되지 않으면 Docker 는 SIGKILL 신호를 보내 강제로 컨테이너를 중지합니다.
컨테이너가 원활하게 종료할 시간을 더 주려면 docker stop 명령어와 함께 -t 또는 --time 옵션을 사용할 수 있습니다. 이 옵션은 SIGKILL 신호를 보내기 전에 대기할 시간 (초) 을 지정합니다.
docker stop -t 60 <컨테이너_이름_또는_ID>
이 예제에서는 Docker 가 SIGKILL 신호를 보내기 전에 컨테이너가 최대 60 초 동안 중지될 때까지 대기합니다.
한 번에 여러 컨테이너를 중지해야 하는 경우 docker stop 명령어에 공백으로 구분된 컨테이너 이름 또는 ID 목록을 사용할 수 있습니다.
docker stop <컨테이너1_이름_또는_ID> <컨테이너2_이름_또는_ID> <컨테이너3_이름_또는_ID>
이렇게 하면 지정된 모든 컨테이너가 나열된 순서대로 중지됩니다.
호스트 시스템이 종료되거나 다시 시작될 때 컨테이너를 자동으로 중지하도록 Docker 를 구성할 수도 있습니다. 이는 컨테이너를 시작할 때 --restart 옵션을 설정하여 수행할 수 있습니다.
docker run --restart=always <이미지_이름>
--restart=always 옵션은 시스템 종료 또는 재부팅을 포함하여 어떤 이유로든 컨테이너가 중지되면 자동으로 다시 시작되도록 합니다.
Docker 컨테이너를 중지하기 위한 이러한 권장 사항을 따르면 애플리케이션이 원활하게 종료되고 데이터 손실이나 기타 문제 발생 위험을 최소화할 수 있습니다.
Docker 컨테이너를 중지한 후 시스템에서 제거할 수 있습니다. Docker 컨테이너를 제대로 삭제하는 것은 시스템 리소스를 확보하고 깨끗하고 정돈된 Docker 환경을 유지하는 데 중요합니다.
단일 Docker 컨테이너를 삭제하려면 docker rm 명령어를 사용할 수 있습니다. 이 명령어는 지정된 컨테이너를 시스템에서 제거합니다.
docker rm <컨테이너_이름_또는_ID>
컨테이너가 아직 실행 중인 경우 -f 또는 --force 옵션을 사용하여 컨테이너를 강제로 제거할 수 있습니다.
docker rm -f <컨테이너_이름_또는_ID>
한 번에 여러 Docker 컨테이너를 삭제하려면 docker rm 명령어에 공백으로 구분된 컨테이너 이름 또는 ID 목록을 제공할 수 있습니다.
docker rm <컨테이너1_이름_또는_ID> <컨테이너2_이름_또는_ID> <컨테이너3_이름_또는_ID>
컨테이너에 연결된 볼륨이 있는 경우 docker rm 명령어는 기본적으로 볼륨을 삭제하지 않습니다. 컨테이너와 볼륨을 함께 삭제하려면 -v 또는 --volumes 옵션을 사용할 수 있습니다.
docker rm -v <컨테이너_이름_또는_ID>
컨테이너를 삭제하면 연결된 이미지는 자동으로 삭제되지 않습니다. 컨테이너와 이미지를 함께 삭제하려면 컨테이너를 삭제한 후 docker rmi 명령어를 사용할 수 있습니다.
docker rm <컨테이너_이름_또는_ID>
docker rmi <이미지_이름_또는_ID>
시간이 지남에 따라 더 이상 실행 중인 컨테이너와 연결되지 않은 중복 컨테이너와 이미지가 시스템에 축적될 수 있습니다. 이러한 항목을 삭제하려면 다음 명령어를 사용할 수 있습니다.
## 중복 컨테이너 삭제
docker container prune
## 중복 이미지 삭제
docker image prune
이러한 Docker 컨테이너 삭제 권장 사항을 따르면 깨끗하고 정돈된 Docker 환경을 유지하고 시스템 리소스를 확보하며 Docker 설정이 효율적이고 관리 가능하도록 할 수 있습니다.
이 튜토리얼을 마치면 Docker 컨테이너를 안전하게 중지하고 제거하는 방법에 대한 확실한 이해를 얻게 됩니다. Docker 컨테이너를 종료하는 최상의 방법을 배우고, 컨테이너화된 애플리케이션이 제대로 종료되고 리소스가 회수되도록 합니다. 이 지식을 통해 Docker 컨테이너의 수명주기를 자신감 있게 관리하고, 컨테이너화된 인프라의 안정성과 효율성을 높일 수 있습니다.