도커 컨테이너를 중지하는 데 문제가 있습니까? 다양한 컨테이너를 생성할 수 있는 기능으로 인해 올바른 방법을 찾기 어려울 수 있습니다. 이 문서에서는 컨테이너를 중지하는 데 사용하는 도커 명령어를 배우게 됩니다.
계속해서 읽어보세요!
사전 요구 사항
이 튜토리얼을 따라하기 위해 다음 사항이 필요합니다:
- Windows 10 – 이 튜토리얼은 Windows에서 도커를 실행하기 위해 사용되었지만, Linux 또는 macOS에서도 동일한 일반적인 단계를 적용할 수 있습니다.
- Docker Desktop – 이 튜토리얼은 버전 3.5.2를 사용합니다. GUI가 없는 경우 Linux에서는 Docker 엔진을 사용할 수 있습니다.
- A running Docker container or containers.
docker stop 컨테이너 명령으로 컨테이너 중지
첫 번째 명령어로 시작해 보겠습니다: docker stop
컨테이너 명령어 및 해당 명령이 컨테이너를 중지하는 방법을 수행하는지 알아보겠습니다.
예를 들어, mystifying_hofstadter
라는 이름과 fb66ed502096
라는 ID를 가진 실행 중인 컨테이너를 중지해야 한다고 가정해 보겠습니다. 아래 예시에서 보여지는 대로, docker stop
컨테이너 명령을 사용하여 컨테이너를 중지하세요.

여러 실행 중인 컨테이너가 있고 이를 중지하려면 docker stop
컨테이너 명령은 한 번에 하나의 컨테이너 ID를 중지하는 것을 지원합니다.
먼저 모든 컨테이너를 docker ps
명령을 사용하여 나열하고 아래와 같이 컨테이너 ID를 docker stop
컨테이너 명령에 전달합니다.

만약 수동으로 컨테이너 ID를 검색하고 docker stop
에 수동으로 전달하지 않고 모든 실행 중인 컨테이너를 중지하려면 docker ps -q
명령을 사용하면 됩니다. docker ps
명령의 -q
매개변수는 컨테이너의 ID만 출력합니다.

위의
$(docker ps -q)
구조는 리눅스의 Bash와 윈도우의 PowerShell에서 모두 하위 표현식입니다. 하위 표현식은 쉘에게 명령 세트docker ps -q
를 먼저 처리하고 원래 명령docker stop
에 결과 세트를 반환하도록 지시합니다.
다음 예제에서는 --stop-signal
플래그가 SIGQUIT
값을 취하며, 이는 Docker가 컨테이너를 중지할 시그널로 SIGQUIT 시그널을 보내라는 것을 알려줍니다. 이 예제는 또한 다음 매개변수를 사용합니다:
d
– Runs the container in detached (background) mode. The detached mode will not allow the container to be immediately interacted with by the user since the process is running in the background.t
– allocates a Pseudo-TTY (PTY) console, which emulates a real terminal console in the container and stops the Ubuntu container from immediately exiting. The Ubuntu container in the example requires a PTY console to stay active in the background.- “이미지 이름” – 어떤 Docker 이미지를 사용하여 컨테이너를 프로비저닝할지, 이 경우에는
ubuntu
이미지입니다.

SIGQUIT
as the signal when starting and then stopping a Docker container. Dockerfile을 사용하여 중지 신호를 지정할 수도 있으며, 이는 Docker에게 컨테이너를 빌드하는 방법을 알려줍니다. Dockerfile에 중지 신호를 지정하는 항목을 추가할 수 있으며, 예를 들어
STOPSIGNAL SIGQUIT
를 사용할 수 있습니다. 원하는 중지 신호로SIGQUIT
를 바꿀 수 있습니다.
docker kill
을 사용하여 즉시 컨테이너 종료
어떤 경우에는 컨테이너에 대기 기간을 허용하지 않고 즉시 종료하고 싶을 때가 있습니다. docker kill
명령은 컨테이너를 즉시 중지합니다.
다음 예제에서는 컨테이너 ID 2aa318273db5
를 docker kill
에 전달합니다. 컨테이너는 즉시 SIGKILL 시그널을 통해 종료됩니다. 컨테이너는 우아한 종료를 허용받지 못할 것입니다. 명령의 결과로 컨테이너가 종료되고 컨테이너의 ID가 표시됩니다.
명령
docker kill $(docker ps -q)
를 사용하여 모든 컨테이너를 즉시 종료합니다. 여기서(docker ps -q
)는 하위 표현식임에 유의하십시오.
docker rm
을 사용하여 컨테이너 중지 및 제거
기본적으로 컨테이너를 생성할 때, 해당 컨테이너는 이전과 동일하게 생성됩니다: 이러한 컨테이너는 멱등성을 갖습니다. 컨테이너를 제거하는 것은 최소한의 영향을 미치며, 이를 위해 docker rm
명령은 컨테이너를 강제로 중지하고 제거합니다. Docker는 주 프로세스에 SIGKILL
시그널을 보내고 해당 컨테이너를 Docker 설치에서 사용 가능한 컨테이너 목록에서 제거합니다.
컨테이너 내부 파일의 변경 내용을 유지해야 하거나 상태를 유지해야 하는 경우, 컨테이너를 제거하면 이러한 변경 내용이 손실됩니다. 잠재적인 문제에 유의하세요!
다음 예제에서는 컨테이너에 kind_galileo
라는 이름이 할당된 경우를 가정합니다. 컨테이너를 제거하기 전에 아래와 같이 컨테이너를 중지해야 합니다. docker ps -a
명령은 예제 컨테이너의 상태를 Exited
로 표시합니다.

이제 컨테이너가 중지되었으므로 docker rm
명령을 사용하여 컨테이너를 완전히 제거할 수 있습니다.
컨테이너를 중지한 다음 컨테이너를 제거하는 대신, --force
와 docker rm
의 조합은 한 번에 컨테이너를 중지하고 제거합니다. 컨테이너인 laughing_elion
은 더 이상 실행할 수 없게 됩니다.
--force
명령을 지정하지 않으면, 다음과 같은 오류 메시지가 발생합니다.Error response from daemon: You cannot remove a running container...

Docker Compose를 사용하여 Docker 컨테이너 중지하기
Docker 명령은 일반적으로 단일 컨테이너에서 사용되지만 여러 컨테이너로 구성된 서비스를 만들 수도 있습니다. Docker Compose 도구를 사용하면 여러 컨테이너로 구성된 서비스를 설정할 수 있습니다.
서비스 내의 컨테이너는 함께 작동하도록 설계되었기 때문에 개별 컨테이너가 아닌 서비스 전체를 정상적으로 중지하는 것이 좋습니다.
여러 컨테이너가 실행 중인 서비스가 있다면 [docker-compose stop]
을 사용하여 컨테이너나 서비스를 제거하지 않고 서비스를 중지할 수 있습니다. 아래에서 Docker Compose 서비스를 생성하고 서비스를 시작하며 최종적으로 정상적으로 서비스를 중지하는 방법을 찾아보세요.
1. 구성 파일을 저장할 디렉토리를 생성하세요. 이 예제에서는 디렉토리 C:\Articles\Ubuntu에 파일을 저장합니다.
2. 그런 다음 다음 구성을 포함하는 파일 docker-compose.yml을 생성하세요. 아래 Docker Compose 파일은 두 개의 Ubuntu 컨테이너를 사용하는 서비스를 생성하며, 컨테이너가 즉시 종료되지 않도록 합니다.
3. 터미널 세션에서 사용자 정의 Docker 구성 파일 디렉토리로 이동하십시오. 이 예에서는 C:\Articles\Ubuntu입니다. docker-compose up -d
명령을 실행하여 앞서 생성한 서비스를 -d
옵션에 의해 백그라운드에서 생성 및 시작합니다.

4. 동일한 터미널 세션 및 디렉토리에서 docker-compose stop
명령을 사용하여 서비스 및 컨테이너를 정상적으로 종료합니다.

docker-compose
명령은docker
명령과 마찬가지로rm --force
및kill
매개변수도 포함하고 있습니다.docker-compose
매개변수는 단일 컨테이너 대신 서비스에 작동합니다.docker-compose kill
명령에는-s
옵션을 사용하여 중지 신호를 지정할 수 있습니다.
결론
Docker 컨테이너는 개발 및 프로덕션 사용을 위한 독특하고 분리된 환경을 만드는 강력한 도구입니다. 이 글에서는 Docker가 하나 이상의 컨테이너를 중지하는 여러 방법을 배웠습니다. 또한 Docker가 사용하는 기본 중지 신호와 그것을 변경하는 방법에 대해 알아보았습니다.
이 지식을 바탕으로 Docker 컨테이너를 중지하는 방법을 완벽하게 알게 되었습니다. 이 새로 얻은 지식을 가지고 앞으로 어떻게 컨테이너를 중지할 계획이신가요?
Source:
https://adamtheautomator.com/docker-stop-containers/