컨테이너 리소스 제한
- 기본으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다.
- 컨테이너가 필요로 하는 만큼의 리소스만 할당 해야한다.
- Docker command를 통해 제한할 수 있는 리소스
- CPU
- Memory
- Disk I/O
Memory 리소스 제한
- 제한 단위는 b, k, m, g로 할당
옵션 | 의미 |
--memory, -m | 컨테이너가 사용할 최대 메모리 양을 지정 |
--memory-swap | 컨테이너가 사용할 스왑 메모리 영역에 대한 설정 컨테이너가 사용할 메모리 영역에 대한 설정 메모리+스왑. 생략 시 메모리의 2배가 설정됨 |
--memory-reservation | --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정 |
--oom-kill-disable | OOM Killer가 프로세스 kill 하지 못하도록 보호 |
- $ docker run -d -m 200m --oom-kill-disable=true nginx:1.14 (메모리가 부족해도 kill 하지 못하도록 보호)
- $ docker run -d -m 512m nginx:1.14 (최대 512m 메모리를 사용)
- $ docker run -d 1g --memory-reservation 500m nginx:1.14 (500m 메모리는 보장 받고 최대 1g까지 사용)
- $ docker run -d -m 200m --memory-swap 300m nginx:1.14
(300m - 200m = 100m으로 100m 만큼 메모리 swap을 사용)
CPU 리소스 제한
옵션 | 의미 |
--cpus | 컨테이너에 할당할 CPU core수를 지정 --cpus="1.5" 컨테이너가 최대 1.5개의 CPU core 사용 가능 |
--cpuset-cpus | 컨테이너가 사용할 수 있는 CPU나 core를 할당 cpu index는 0부터 --cpuset-cpus=0-4 |
--cpu-shares | 컨테이너가 사용하는 CPU 비중을 1024값을 기반으로 설정 --cpu-shares 2048 기본 값보다 두 배 많은 CPU 자원을 할당 |
- $ docker run --cpuset-cpus 1 --name --name c1 -d polinux/stress stress --cpu 1
(stress로 부하를 테스트 하기 위함) - htop으로 확인
- $ docker run --cpu-shares(-c) 2048 --name c1 -d polinux/stress stress -c 2 등 4개 생성 후 테스트
- $ docker stats 명령어로 확인
- $ docker run -d --cpus=".5" ubuntu:1.14 (1개 코어에 절반만 사용)
Block I/O 제한
옵션 | 의미 |
--blkio-weight --blkio-weight-device |
Block I/O의 Quota를 설정할 수 있으며 100~1000까지 선택 default 500 |
--device-read-bps --device-write-bps |
특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정 |
--device-read-iops --device-write-iops |
컨테이너의 read/write 속도의 Quota를 설정한다. 초당 Quota를 제한해서 I/O를 발생시킨다. 0이상의 정수 표기 초당 데이터 전송량 = IOPS * 블럭크기(단위 데이터 용량) |
- Device 확인
- --device-write-iops 10, 100 Quota를 설정해서 테스트
'Docker' 카테고리의 다른 글
Docker 컨테이너 사용하기 (0) | 2021.08.18 |
---|---|
컨테이너 보관 창고(Docker Registry) (0) | 2021.08.13 |
도커 컨테이너 만들기 (0) | 2021.08.12 |
도커 컨테이너 살펴보기 (0) | 2021.08.11 |
도커 설치하기 : Ubuntu에 Docker 설치하기 (0) | 2021.08.10 |
댓글