가이드/Docker 컨테이너 중단하는 방법

Mac에서 Docker 컨테이너 중단하는 방법: 하나만, 또는 전부

Atta 🐬

Vitals 창립자

게시일

간단한 답

Docker 컨테이너 하나를 중단하려면 docker stop 뒤에 이름이나 ID를 붙여 실행하세요. 목록은 docker ps로 볼 수 있습니다. 실행 중인 컨테이너를 모두 중단하려면 docker stop $(docker ps -q) 명령을 실행하세요. Compose 프로젝트에서는 docker compose stop 명령이 컨테이너를 중단하고, docker compose down 명령은 컨테이너를 제거까지 합니다. docker stop은 컨테이너에 종료를 요청하고 10초 뒤에 강제로 끝냅니다. 다시 살아나는 컨테이너에는 재시작 정책이 있으며, docker update --restart=no 명령으로 끌 수 있습니다. Mac용 시스템 모니터인 Vitals는 메뉴 막대에서 컨테이너를 중단합니다. 컨테이너 목록에 각각의 메모리가 표시되고, 클릭 한 번으로 확인 후 중단합니다.

터미널에서 Docker 컨테이너 중단하는 방법

  1. 01 docker ps 명령을 실행해 실행 중인 컨테이너를 이름, ID와 함께 나열합니다.
  2. 02 docker stop에 이름을 붙여 하나를 중단합니다. 예: docker stop web-1. 명령 하나에 여러 개의 이름을 적을 수 있습니다.
  3. 03 docker stop $(docker ps -q) 명령으로 실행 중인 모든 컨테이너를 중단합니다. docker ps -q는 ID만 출력하고, docker stop이 그 ID를 모두 받습니다.
  4. 04 Compose 프로젝트는 해당 폴더에서 docker compose stop 명령을 실행하면 서비스가 중단되고, docker compose down 명령을 실행하면 중단한 뒤 컨테이너와 프로젝트 네트워크까지 제거됩니다. -v 옵션을 추가하지 않으면 볼륨은 남습니다.
  5. 05 docker ps 명령을 다시 실행합니다. 아직 목록에 있는 컨테이너는 종료 중이고, 잠시 뒤 다시 나타나는 컨테이너에는 재시작 정책이 있습니다.

docker 명령이 OrbStack, Colima, Rancher Desktop을 가리키고 있다면 같은 명령이 그대로 작동합니다. Podman에는 podman stop 명령이 있고, podman stop -a 명령으로 전부 중단합니다.

컨테이너를 중단하면 그 프로세스는 끝나지만 파일, 설정, 볼륨 등 나머지는 모두 남아 docker start로 바로 다시 시작할 수 있습니다. 그래서 쓰지 않는 컨테이너에서 메모리와 CPU를 돌려받는 안전한 방법입니다. 아래 표는 함께 자주 쓰는 명령들과 비교합니다.

docker stop, kill, pause, rm, compose down

명령하는 일이럴 때 사용
docker stop SIGTERM을 보내고, 10초 뒤 SIGKILL을 보냄 거의 항상: 앱이 쓰기를 마치고 연결을 닫을 수 있음
docker kill 즉시 SIGKILL을 보냄 컨테이너가 docker stop 명령을 무시할 때
docker pause 프로세스를 멈춰 두며, 메모리는 그대로 유지 메모리가 아니라 CPU를 잠시 돌려받고 싶을 때
docker rm 중단된 컨테이너를 제거. -f를 쓰면 실행 중인 것도 제거 더 이상 필요 없을 때. 이름 있는 볼륨은 남음
docker compose stop 프로젝트의 컨테이너를 중단하고 남겨 둠 같은 프로젝트를 곧 다시 시작할 때
docker compose down 컨테이너와 네트워크를 중단하고 제거 다음에 깨끗하게 시작하고 싶을 때. 볼륨까지 제거하려면 -v 추가

중단한 컨테이너가 다시 시작되는 이유

재시작 정책이 있는 컨테이너는 Docker가 다시 시작합니다. always인 경우 중단한 컨테이너가 다음에 Docker Desktop이 시작될 때 다시 살아나므로, 어제 중단한 컨테이너가 재시동 뒤에 다시 실행됩니다. unless-stopped인 경우 중단한 컨테이너는 중단된 채로 남습니다. Compose 파일에서는 데이터베이스와 캐시에 restart: always를 설정하는 경우가 많습니다.

컨테이너의 정책을 보려면 docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' 뒤에 이름을 붙여 실행하세요. 끄려면 docker update --restart=no에 이름을 붙여 실행하거나, Compose 파일의 restart:를 바꾸세요.

docker stop이 10초 걸릴 때

docker stop은 SIGTERM을 보낸 뒤 컨테이너의 메인 프로세스가 끝나기를 기다립니다. 신호를 무시하는 프로세스(흔히 신호를 전달하지 않는 셸 스크립트)는 Docker가 강제로 끝낼 때까지 꼬박 10초 동안 중단을 지연시킵니다. docker stop -t 2 옵션으로 대기 시간을 줄일 수 있습니다. 이미지를 고치면 바로 중단됩니다. 엔트리포인트 스크립트에서 exec 명령으로 앱을 시작하거나, Compose에서 서비스에 init: true를 설정하세요.

컨테이너 중단하기, 그리고 메모리 돌려받기

Mac에서 컨테이너는 Linux 가상 머신 하나 안에서 실행됩니다. 컨테이너를 중단하면 그 안의 메모리는 비워지지만 가상 머신이 계속 붙잡고 있을 수 있어서, 활성 상태 보기에 여전히 큰 Virtual Machine Service for Docker가 보일 수 있습니다. Resource Saver를 켜거나 Docker Desktop을 종료하면 macOS에 돌려줍니다. 설정 방법은 Docker 메모리 과다 사용을 참고하세요.

터미널 없이 컨테이너 중단하기

Docker Desktop의 Containers 화면에는 컨테이너마다, 그리고 Compose 프로젝트마다 Stop 버튼이 있습니다. Docker Desktop 윈도우 안에 있으므로 앱을 열어야 쓸 수 있습니다. Captain 같은 메뉴 막대 앱은 메뉴 막대 아이콘 아래에 컨테이너를 나열하고 각각 시작과 중단 버튼을 붙여 줍니다. Vitals도 메뉴 막대에서 같은 일을 하면서, 다른 앱들이 보여 주지 않는 것을 더합니다. 각 컨테이너가 메모리와 CPU를 얼마나 쓰는지 보여 주므로, 어느 것을 중단할지 알 수 있습니다.

Vitals가 더해 주는 것

Vitals는 Mac 메뉴 막대에서 메모리를 보면서 컨테이너를 중단할 수 있게 해 줍니다.

  • 드롭다운의 컨테이너 목록: 실행 중인 컨테이너마다 Compose 프로젝트, 이미지, 메모리 막대를 표시
  • 컨테이너 위에 포인터를 올리면 나타나는 ×를 클릭. 해당 행에서 확인을 요청한 다음, docker stop처럼 종료할 시간 10초를 주고 중단
  • 윈도우의 컨테이너 탭에서 여러 개를 선택하고 Control-클릭해 함께 중단하거나, Compose 프로젝트를 Control-클릭하고 모두 중단을 선택
  • Docker Desktop, OrbStack, Colima, Rancher Desktop, Podman의 모든 컨테이너에 대한 메모리, CPU, 네트워크, 디스크, 게시된 포트

알아 두면 좋은 점

  • Vitals는 무엇이든 중단하기 전에 묻고, 컨테이너를 시작하거나 제거하거나 변경하지 않습니다.
  • 재시작 정책이 있는 컨테이너는 엔진이 다시 시작할 수 있습니다. 확인을 요청할 때 윈도우에서 이를 알려 줍니다.
  • 엔진이 거부하거나 응답하지 않으면, 해당 행에 컨테이너가 아직 실행 중이라고 표시됩니다.
  • 컨테이너 목록은 엔진이 실행 중일 때 나타납니다.
Vitals 구입 $9 출시 할인 기간 $9, 이후 $29. 14일 이내 환불.

자주 묻는 질문

Docker 컨테이너를 한 번에 모두 중단하려면 어떻게 하나요?

docker stop $(docker ps -q) 명령을 실행하세요. 실행 중인 모든 컨테이너의 ID를 나열하고 하나씩 중단합니다. Vitals에서는 컨테이너 탭에서 선택한 뒤 Control-클릭해 함께 중단할 수 있습니다.

docker stop과 docker kill의 차이는?

docker stop은 SIGTERM을 보내고 최대 10초 동안 기다린 다음 SIGKILL로 컨테이너를 강제로 끝냅니다. docker kill은 즉시 SIGKILL을 보내므로, 앱이 쓰기를 마치거나 연결을 닫을 기회가 없습니다.

docker compose stop과 down의 차이는?

docker compose stop은 컨테이너를 중단하고 남겨 두므로 docker compose start로 바로 다시 시작할 수 있습니다. docker compose down은 중단한 뒤 컨테이너와 프로젝트 네트워크를 제거하며, -v 옵션을 추가하지 않으면 볼륨은 남습니다.

중단한 Docker 컨테이너가 다시 시작되는 이유는?

재시작 정책이 always로 되어 있어서 Docker Desktop이 시작될 때 Docker가 다시 시작하는 것입니다. 이름을 붙여 docker update --restart=no를 실행하거나, Compose 파일의 restart:를 바꾸세요.

컨테이너를 중단하면 데이터가 삭제되나요?

아니요. 중단된 컨테이너는 파일과 볼륨을 그대로 유지하며, docker start 명령으로 다시 실행할 수 있습니다. docker rm 명령은 컨테이너를 제거하지만, 이름 있는 볼륨은 직접 제거할 때까지 남습니다.

Mac 메뉴 막대에서 Docker 컨테이너를 중단할 수 있나요?

네, Vitals로 가능합니다. 메뉴 막대 드롭다운에 실행 중인 컨테이너가 메모리와 함께 나열되고, 클릭 한 번으로 확인 후 중단합니다. Docker Desktop, OrbStack, Colima, Rancher Desktop, Podman에서 작동합니다.

용어집에서 보기

다른 가이드