하드웨어 리소스 제한
컨테이너 리소스 제한
- 기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다.
- 도커 명령어를 통해 리소스를 제한할 수 있다.
- CPU, Memory. Disk I/O에 대한 리소스를 제한할 수 있다.
- docker run 명령어 옵션으로 가능
CPU 리소스 제한
docker run -d --cpus=”.5” ubuntu:1.14
docker run -d --cpu-shares 2048 ubuntu:1.14
- 기본 값보다 두 배 많은 CPU 자원 할당
- 다른 컨테이너에 비해 두 배 많은 자원을 할당 받는다고 보면 된다.
docker run -d --cpuset-cpus 0-3 ubuntu:1.14
Memory 리소스 제한
docker run -d -m 512m nginx:1.14
- 최대 사용할 수 있는 메모리 사이즈가 512mb로 지정, 이상으로 사용하면 fail된다.
docker run -d -m 1g --memory-reservation 500m nginx:1.14
- 최대 사용할 수 있는 메모리 용량은 1GB, 최소 500MB는 사용할 수 있도록 보장 받는다. 사용량은 500MB ~ 1GB 사이가 된다.
docker run -d -m 200m --memory-swap 300m nginx:1.14
- 메모리를 200m, 스왑으로 300m사용할 수 있다. (총 500MB를 사용할 수 있는 것이 아니라 스왑 메모리 300MB 안에 메모리 200MB가 있어 실제 스왑 메모리는 100MB다.)
- 스왑 메모리까지 사용해서 총 300MB를 사용할 수 있다는 뜻이다.
docker run -d -m 200m --oom-kill-disable nginx:1.14
- 리눅스 커널에서 피지컬한 메모리가 부족하게 되면 out of memory가 실행되어 메모리를 많이 사용하는 프로세스를 종료시키는 기능이 있다.
- OOM으로 종료되지 않도록 설정해주는 기능이다.
Block I/O 제한
docker run -it --blkio-wegiht 100 ubuntu:latest /bin/bash
- 리소스를 100으로 상대적으로 적게 할당
- 높은 값일수록 우선순위가 높아지고 더 많은 I/O 리소스를 할당받게 된다.
docker run -it --device-write-bps /dev/vda:1mb ubuntu:latest /bin/bash
- /dev/vda에 저장할 때는 초당 1mb로 설정
docker run -it --device-write-iops /dev/vda:100 ubuntu:latest /bin/bash
- /dev/vda에 저장할 때는 iops 값이 100으로 설정, 초당 100번의 쓰기 작업