실행 중인 Docker 컨테이너 종료 방법

DockerBeginner
지금 연습하기

소개

Docker 컨테이너는 애플리케이션 배포 및 가상화에 강력한 도구입니다. 실행 중인 컨테이너를 올바르게 종료하는 방법을 이해하는 것은 효과적인 컨테이너 관리에 필수적입니다. 이 튜토리얼에서는 Docker 컨테이너를 중지하고 제거하는 다양한 기술을 탐색하여 개발자 및 시스템 관리자가 깨끗하고 효율적인 컨테이너화된 환경을 유지하는 데 도움을 줄 것입니다.

컨테이너 수명주기

Docker 컨테이너 상태 이해

Docker 컨테이너는 존재의 다양한 단계를 나타내는 명확하게 정의된 수명주기를 가지고 있습니다. 이러한 상태를 이해하는 것은 효과적인 컨테이너 관리에 필수적입니다.

컨테이너 상태 개요

상태 설명 일반적인 전환
생성됨 컨테이너가 초기화되었지만 실행 중이 아닙니다. 시작 가능
실행 중 컨테이너가 활발하게 실행 중입니다. 중지 또는 일시 중지 가능
일시 중지 컨테이너의 프로세스가 일시적으로 중지되었습니다. 재개 또는 중지 가능
중지됨 컨테이너가 실행을 완료하거나 수동으로 중지되었습니다. 다시 시작 가능
종료됨 컨테이너의 주 프로세스가 완료되었습니다. 제거 가능

컨테이너 수명주기 워크플로우

stateDiagram-v2 [*] --> Created : docker create Created --> Running : docker start Running --> Paused : docker pause Paused --> Running : docker unpause Running --> Stopped : docker stop Stopped --> Running : docker restart Stopped --> [*] : docker rm

기본 컨테이너 수명주기 명령어

컨테이너 생성

docker create --name mycontainer ubuntu:22.04

컨테이너 시작

docker start mycontainer

컨테이너 중지

docker stop mycontainer

주요 수명주기 개념

  1. 컨테이너는 가벼우며, 격리된 환경입니다.
  2. 컨테이너는 다양한 상태로 전환될 수 있습니다.
  3. 수명주기 관리는 효율적인 리소스 활용에 필수적입니다.

LabEx 에서는 Docker 워크플로우를 최적화하고 시스템 성능을 개선하기 위해 이러한 컨테이너 수명주기 원칙을 숙달하는 것을 권장합니다.

컨테이너 중지

컨테이너 종료 방법 이해

Docker 는 실행 중인 컨테이너를 중지하는 여러 가지 방법을 제공하며, 각 방법에는 특정 사용 사례와 동작이 있습니다.

중지 기술 비교

방법 명령어 동작 유예 시간
docker stop docker stop SIGTERM, 그 다음 SIGKILL 전송 기본 10 초
docker kill docker kill 즉시 종료 즉시 종료
docker pause docker pause 컨테이너 프로세스 일시 중지 되돌릴 수 있음

정상적인 컨테이너 종료

docker stop 사용

## 특정 컨테이너 중지
docker stop container_name

## 여러 컨테이너 중지
docker stop container1 container2 container3

사용자 지정 유예 시간으로 중지

## 30초 유예 시간으로 중지
docker stop -t 30 container_name

고급 종료 워크플로우

flowchart TD A[실행 중인 컨테이너] --> |docker stop| B[SIGTERM 전송] B --> C{프로세스가 응답하나?} C -->|예| D[정상 종료] C -->|아니오| E[SIGKILL 전송] E --> F[컨테이너 중지]

응답하지 않는 컨테이너 처리

강제 종료

## 컨테이너를 즉시 종료
docker kill container_name

권장 사항

  1. 정상 종료를 위해 docker stop을 우선적으로 사용합니다.
  2. 적절한 유예 시간을 설정합니다.
  3. 컨테이너 정리를 체계적으로 처리합니다.

LabEx 에서는 컨테이너 수명주기를 효과적으로 관리하기 위해 이러한 종료 기술을 이해하는 것을 권장합니다.

종료 기술

고급 컨테이너 종료 전략

신호 기반 종료 방법

flowchart TD A[컨테이너 프로세스] --> |SIGTERM| B[정상 종료] A --> |SIGKILL| C[즉시 종료] A --> |SIGSTOP| D[프로세스 일시 중지]

종료 신호 비교

신호 이름 동작 사용 사례
SIGTERM 종료 정상 종료 권장 기본값
SIGKILL 종료 즉시 종료 응답하지 않는 컨테이너 강제 중지
SIGSTOP 중지 프로세스 일시 중지 일시적인 중지

프로그래밍 방식의 컨테이너 종료

Docker CLI 사용

## 사용자 지정 신호로 종료
docker kill --signal=SIGTERM container_name

## 중지된 모든 컨테이너 제거
docker container prune

스크립트 기반 종료

#!/bin/bash
## 자동화된 컨테이너 정리 스크립트
docker ps -q | xargs -r docker stop
docker container prune -f

복잡한 종료 시나리오 처리

배치 컨테이너 관리

## 필터로 컨테이너 중지
docker stop $(docker ps -f "label=environment=production" -q)

시간 제한 기반 종료

## 시간 제한 메커니즘으로 종료
docker stop -t 30 container_name

오류 처리 및 로깅

종료 로그 캡처

docker stop container_name 2>&1 | tee container_stop.log

권장 사항

  1. 정상 종료 신호를 우선적으로 사용합니다.
  2. 적절한 오류 처리를 구현합니다.
  3. 디버깅을 위해 로깅을 사용합니다.

LabEx 에서는 강력한 시스템 관리를 위해 세심한 컨테이너 종료 기술을 이해하는 것을 강조합니다.

요약

Docker 컨테이너 종료를 마스터하는 것은 현대 소프트웨어 개발 및 DevOps 실무에서 필수적인 기술입니다. 컨테이너를 중지하고 제거하는 다양한 방법을 이해함으로써 시스템 리소스를 효과적으로 관리하고, 애플리케이션 수명주기를 제어하며, 원활한 Docker 워크플로우를 유지할 수 있습니다. 정상 종료 명령어를 사용하든 강제 종료 기술을 사용하든, 이러한 전략은 최적의 컨테이너 관리를 보장합니다.