본문 바로가기

Docker

docker container 리소스 관리

1. 컨테이너 리소스 제한 방법

1) 상대적 가중치를 줘서 처리해준다.

2) docker command를 통해 제한할 수 있는 리소스

(1) CPU 리소스 제한

  • —cpus
    • 컨테이너에 할당할 CPU core 수 지정
    • docker run -d —cpus=“.5” ubuntu:1.14
      • cpu 1개 코어에 절반만큼 쓸 수 있다는 의미.
  • —cpu-shares
    • 다른 컨테이너에 비해 더 많은 양의 CPU 비중을 두고 싶을 때 사용
    • docker run -d —cpu-shares 2048 ubuntu
  • —cpuset-cpus
    • 컨테이너가 사용할 수 있는 cpu나 코어를 할당. cpu index는 0부터 시작.
    • docker run -d —cpuset-cpus 0-3 ubuntu
      • cpu 코어 0,1,2,3 중에서 동작해야한다는 의미.

(2) Memory 리소스 제한

  • 제한 단위는 b, k, m, g로 할 당
  • —memory, -m
    • 컨테이너가 사용할 최대 메모리 지정
    • docker run -d -m 512m nginx
  • —memory-swap
    • 메모리+스왑. 생략시 메모리의 2배 설정
    • docker run -d -m 200m —memory-swap 300m nginx
      • 스왑 할 수 있음 메모리는 100m. 만약 생략하거나 200m면 2배인 400m 설정
  • —oom-kill-disable
    • OOM Killer가 프로세스 kill하지 못하도록 보호
    • docker run -d -m 200m —tom-kill-disable nginx
  • —memory-reservation
    • 최대 x, 최소 y만큼 쓸 수 있다는 의미. 즉, y만큼을 보장 받음.
    • docker run -d -m 1g —memory-reservation 500m nginx
      • 500m만큼은 사용할 수 있도록 보장받는다는 의미.

(3) Block I/O 제한

  • I/O 스케줄러가 컨테이너에게 동일하게 제공되는데 특정 컨테이너에게 더 많은 할당을 주기 위해서 사용.
  • —blkio-weight, —blkio-weight-device
    • block IO의 Quota를 설정할 수 있고 100~1,000까지 선택 가능.
    • default 500
    • docker run -it —rm —blkio-weight 100 ubuntu /bin/bash
      • 100이라면.. 좀 적게 가져 가겠다는 의미.
  • —device-read-bps or —device-write-bps
    • 특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정
    • docker run -it —rm —device-write-bps /dev/vad:10mb ubuntu /bin/bash
      • 작업 속도를 10mb로 하겠다 의미.
  • —device-read-iops or —device-write-iops
    • 컨테이너의 read, write 속도의 쿼터를 설정
    • 즉, 초당 최대 읽을 수 있는 혹은 쓸 수 있는 속도의 쿼터를 정해서 I/O를 발생시킴.
    • 0 이상의 정수로 표기
    • 초당 데이터 전송량 = IOPS*블록 크기(단위 데이터 용량)
    • docker run -it —rm —device-read-iops /dev/vda:100 ubuntu /bin/bash
      • 속도의 크기(쿼터)가 100

(4) docker run —help

2. docker monitoring commands

1) docker stat [option] [container]

  • 실행 중인 컨테이너의 런타임 통계 확인

2) docker events -f container=<name>

  • 도커 호스트의 실시간 event 정보를 수집해서 출력
  • docker image -f container=[name]

3. cAdvisor

'Docker' 카테고리의 다른 글

컨테이너 데이터 영구보존  (0) 2021.11.10
Docker 모니터링  (0) 2021.11.10
Docker 사용하기  (0) 2021.11.05
컨테이너 보관 창고  (0) 2021.11.05
Dockerfile 작성방법  (0) 2021.11.05