본문 바로가기

리눅스

[draft] Docker Compose 리소스 제약 조건 구성

Docker Compose 리소스 제약 조건 구성 (Docker Compose Resource Limits)

Docker Compose에서는 컨테이너가 사용할 수 있는 CPU와 메모리 사용량을 제한하여 호스트 시스템의 리소스를 효율적으로 관리할 수 있습니다.

docker compose resources

1. Docker Compose 파일 생성

Docker Compose 설정 파일을 생성합니다.

vim docker-compose.yml
version: '3.8'
services:

  centos7-systemd:
    image: anti1346/centos7:systemd
    container_name: centos7-systemd
    privileged: true
    hostname: centos7
    restart: always
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
    cap_add:
      - SYS_ADMIN
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    ports:
      - "8082:80"
      - "2222:22"

설정 항목 설명

  • image : 사용할 Docker 이미지
  • container_name : 생성될 컨테이너 이름
  • privileged : systemd 실행을 위한 privileged 모드
  • hostname : 컨테이너 내부 hostname
  • restart : 컨테이너 재시작 정책
  • deploy.resources.limits : 컨테이너 리소스 제한
    • cpus : CPU 사용량 제한
    • memory : 메모리 사용량 제한
  • cap_add : 컨테이너에 추가할 Linux Capability
  • volumes : systemd 동작을 위한 cgroup 마운트
  • ports : 호스트와 컨테이너 포트 매핑

2. 리소스 제한 설정

Docker Compose에서 다음과 같이 리소스를 제한할 수 있습니다.

deploy:
  resources:
    limits:
      cpus: '0.50'
      memory: 50M

설정 의미

  • cpus: '0.50' CPU 코어 0.5개 사용 가능
  • memory: 50M 메모리 최대 50MB 사용 가능

즉 해당 컨테이너는 CPU 50% 메모리 50MB 이상 사용할 수 없습니다.

3. Docker Compose 실행

Compose 파일이 있는 디렉토리에서 실행합니다.

docker compose up -d

실행 확인

docker ps

4. 컨테이너 리소스 사용량 확인

docker stats 명령어

Docker 기본 명령어로 실시간 리소스를 확인할 수 있습니다.

docker stats

docker stats

확인 가능한 정보

  • CPU 사용률
  • 메모리 사용량
  • 네트워크 사용량
  • 블록 I/O

ctop 명령어

ctop은 Docker 컨테이너 리소스를 top 스타일 UI로 확인할 수 있는 도구입니다.

ctop

docker ctop

특징

  • 실시간 CPU / Memory 모니터링
  • 컨테이너 정렬 기능
  • 인터랙티브 UI
  • docker stats보다 가독성이 좋음

5. 참고 사항 (중요)

Docker Compose version 3.x에서 deploy 옵션은 기본 docker compose에서는 일부 제한이 있습니다.

deploy 옵션은 원래 Docker Swarm 환경에서 동작하도록 설계되었습니다.

일반 Docker Compose 환경에서는 다음 옵션을 사용하는 것이 더 일반적입니다.

cpus: "0.5"
mem_limit: 50m
services:
  centos7-systemd:
    image: anti1346/centos7:systemd
    cpus: "0.5"
    mem_limit: 50m

6. 리소스 제한 확인 방법

컨테이너 설정 확인

docker inspect centos7-systemd

리소스 관련 정보 확인

"NanoCpus"
"Memory"

 

참고URL

- Docker Documentation : docker compose resources