소개
이 포괄적인 튜토리얼은 Docker 컨테이너 관리의 중요한 측면을 탐구하며, 개발자 및 시스템 관리자에게 컨테이너 작업을 효과적으로 제어하고 최적화하는 필수 기술을 제공합니다. 컨테이너 수명 주기, 리소스 관리 및 운영 전략을 숙달함으로써 컨테이너화된 애플리케이션을 정확하고 효율적으로 배포, 모니터링 및 확장하는 능력을 향상시킬 수 있습니다.
이 포괄적인 튜토리얼은 Docker 컨테이너 관리의 중요한 측면을 탐구하며, 개발자 및 시스템 관리자에게 컨테이너 작업을 효과적으로 제어하고 최적화하는 필수 기술을 제공합니다. 컨테이너 수명 주기, 리소스 관리 및 운영 전략을 숙달함으로써 컨테이너화된 애플리케이션을 정확하고 효율적으로 배포, 모니터링 및 확장하는 능력을 향상시킬 수 있습니다.
Docker 컨테이너는 애플리케이션 실행에 필요한 모든 것을 포함하는 경량의 독립 실행형 실행 패키지입니다. 코드, 런타임, 시스템 도구, 라이브러리 및 설정이 포함됩니다. 가상 머신과 달리 컨테이너는 하드웨어 대신 운영 체제를 가상화하여 더욱 효율적이고 휴대 가능합니다.
| 특징 | 설명 |
|---|---|
| 격리 | 컨테이너는 격리된 환경에서 실행됩니다 |
| 경량성 | 최소한의 리소스 소비 |
| 휴대성 | 다양한 플랫폼에서 일관되게 실행 가능 |
| 확장성 | 쉽게 확장 또는 축소 가능 |
docker pull ubuntu:22.04
docker run -it --name my-container ubuntu:22.04 /bin/bash
## 실행 중인 컨테이너 목록
docker ps
## 모든 컨테이너 목록
docker ps -a
LabEx 는 개발자가 실제 환경에서 컨테이너 기술을 연습하고 이해하는 데 도움이 되는 실습 Docker 컨테이너 환경을 제공합니다.
Docker 컨테이너는 여러 상태를 가지며, 특정 명령을 통해 제어할 수 있습니다. 이러한 상태를 이해하는 것은 효과적인 컨테이너 관리에 필수적입니다.
| 명령어 | 동작 | 설명 |
|---|---|---|
docker create |
생성 | 컨테이너를 시작하지 않고 준비합니다 |
docker start |
시작 | 중지된 컨테이너를 시작합니다 |
docker run |
생성 + 시작 | 컨테이너를 생성하고 즉시 시작합니다 |
docker stop |
중지 | 실행 중인 컨테이너를 정상적으로 중지합니다 |
docker restart |
재시작 | 컨테이너를 중지한 후 다시 시작합니다 |
docker pause |
일시 중지 | 컨테이너 내 모든 프로세스를 일시 중지합니다 |
docker unpause |
일시 중지 해제 | 일시 중지된 프로세스를 다시 시작합니다 |
docker rm |
삭제 | 중지된 컨테이너를 삭제합니다 |
## 새로운 컨테이너 생성
docker create --name web-app nginx:latest
## 컨테이너 시작
docker start web-app
## 컨테이너 중지
docker stop web-app
## 컨테이너 삭제
docker rm web-app
## 분리된 모드로 컨테이너 실행
docker run -d --name background-app ubuntu:22.04 sleep 3600
## 대화형 쉘로 컨테이너 실행
docker run -it --name test-container ubuntu:22.04 /bin/bash
## 항상 컨테이너 재시작
docker run -d --restart=always nginx:latest
## 최대 재시작 횟수를 가진 실패 시 재시작
docker run -d --restart=on-failure:5 web-application
## 컨테이너에 특정 시그널 전송
docker kill --signal=SIGTERM web-container
## 컨테이너 이벤트 감시
docker events
## 컨테이너 세부 정보 확인
docker inspect web-container
LabEx 는 컨테이너 수명 주기 관리를 연습할 수 있는 대화형 환경을 제공하여 개발자가 Docker 컨테이너 제어 기술을 숙달할 수 있도록 지원합니다.
컨테이너 리소스 관리 (Container Resource Management) 는 성능 최적화, 공정한 리소스 할당, 시스템 과부하 방지에 필수적입니다.
| 전략 | 설명 | Docker 플래그 |
|---|---|---|
| CPU Shares | 상대적인 CPU 시간 할당 | --cpu-shares |
| CPU 코어 | 특정 CPU 코어 제한 | --cpuset-cpus |
| CPU Period | CPU 할당 시간 제어 | --cpu-period |
| CPU Quota | CPU 사용량 백분율 제한 | --cpu-quota |
## 컨테이너를 CPU 코어의 50%로 제한
docker run -d --cpus=0.5 nginx:latest
## 컨테이너를 특정 CPU 코어에 할당
docker run -d --cpuset-cpus="0,1" web-app
## CPU Shares 설정 (기본값은 1024)
docker run -d --cpu-shares=512 background-service
## 하드 메모리 제한 설정
docker run -d --memory=500m nginx:latest
## 소프트 메모리 제한과 예약 설정
docker run -d --memory=1g --memory-reservation=750m web-app
## 컨테이너가 과도한 메모리를 사용하는 것을 방지
docker run -d --oom-kill-disable=false --memory=500m app
## 이름이 지정된 볼륨 생성
docker volume create app-data
## 컨테이너에 볼륨 마운트
docker run -v app-data:/app/data nginx:latest
## 컨테이너의 디스크 I/O 제한
docker run --device-write-bps /dev/sda:10mb web-app
## 네트워크 대역폭 제한
docker run --net-alias=limited-network \
--network-bandwidth=100kbps \
web-service
## 네트워크 연결 제한 제어
docker run --ulimit nproc=50 app-container
## 실시간 컨테이너 리소스 통계
docker stats
## 컨테이너 리소스 구성 확인
docker inspect --format '{{.HostConfig.Memory}}' container-name
| 도구 | 용도 |
|---|---|
| cAdvisor | 컨테이너 모니터링 |
| Prometheus | 메트릭 수집 |
| Grafana | 시각화 |
LabEx 는 고급 Docker 리소스 관리 기법을 실습할 수 있는 포괄적인 환경을 제공하여 개발자가 컨테이너 성능과 효율을 최적화할 수 있도록 지원합니다.
현대 소프트웨어 개발 및 배포를 위해 Docker 컨테이너 작동 원리를 이해하는 것은 필수적입니다. 이 튜토리얼은 컨테이너 수명 주기 관리, 리소스 제어 및 최적의 실무를 구현하는 기본적인 기술을 갖추도록 돕습니다. 이러한 기술을 적용하여 개발 및 운영 워크플로우를 간소화하는 더욱 강력하고 확장 가능하며 효율적인 컨테이너화된 환경을 만들 수 있습니다.