하드웨어 리소스 제한 및 컨테이너 모니터링
| 옵션 | 의미 |
|---|---|
| --memory, -m | 컨테이너가 사용할 최대 메모리 양을 지정 |
| --memory-swap | 컨테이너가 사용할 스왑 메모리 영역에 대한 설정 메모리+스왑. 생략시 메모리의 2배가 설정됨 |
| --memory-reservation | --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정 |
| --oom-kill-disable | OOM Killer가 프로세스를 kill하지 못하도록 보호 |
example
$ docker run -d -m 512m nginx:1.14 : nginx 컨테이너가 최대로 쓸 수 있는 메모리는 최대 512MB가 되도록 함
$ docker run -d -m 1g --memory-reservation 500m nginx:1.14 : nginx 컨테이너가 최대 1GB 쓸 수 있고 적어도 500MB는 쓸 수 있도록 보장
$ docker run -d -m 200m --memory-swap 300m nginx:1.14 : (swap memory:disk를 메모리처럼 쓰는 것), 메모리 200MB까지 쓸 수 있고 swap memory까지하면 300MB까지 보장 -> disk memory는 100MB를 추가로 쓰는 것
IF) docker run -d -m 200m --memory-swap 200m nginx:1.14 : swap size를 안쓰게 되는 바보짓...
$ docker run -d -m 200m --oom-kill-disable nginx:1.14 : Linux kernal은 physical memory가 부족하게 되면 Out Of Memory Killer를 동작시켜서 process들을 kill하는데 이렇게 kill 당하는 것을 방지하는 옵션
| 옵션 | 의미 |
|---|---|
| --cpus | 컨테이너에 할당할 CPU core수를 지정 --cpus="1.5" : 컨테이너가 최대 1.5개의 CPU 파워 사용가능 |
| --cpuset-cpus | 컨테이너가 사용할 수 있는 CPU나 코어를 할당 cpu index는 0부터 시작, --cpuset-cpus=0-4 |
| --cpu-share | 컨테이너가 사용하는 CPU 비중을 1024 값을 기반으로 설정 --cpu-share 2048 : 기본 값보다 두 배 많은 CPU 자원을 할당 |
example
$ docker run -d --cpus=".5" ubuntu : ubuntu 컨테이너는 0.5개의 CPU 파워 사용가능
$ docker run -d --cpu-shares 2048 ubuntu : ubuntu 컨테이너는 기본값*2 CPU 파워 사용 가능
$ docker run -d --cpuset-cpus 0-3 ubuntu : ubuntu 컨테이너는 0-3 총 4개의 CPU 코어 사용 가능
| 옵션 | 의미 |
|---|---|
| --blkio-weigth --blkio-weight-device | Black IO의 Quota를 설정할 수 있으며 100~1000까지 선택, default 500 |
| --device-read-bps --device-write-bps | 특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정 |
| --device-read-iops --device-write-iops | 컨테이너의 read/write 속도의 쿼터를 설정한다. 초당 quota를 제한해서 I/O를 발생시킴, 0이상의 정수로 표기 초당 데이터 전송량 = IOPS*블럭크기(단위 데이터 용량) |
example
$ docker run -it --rm --blkio-weight 100 ubuntu /bin/bash : Block IO 리소스를 100만큼만 받겠다! -> 최소로 받는 것임
$ docker run -it --rm --device-write-bps /dev/vda:1mb ubuntu /bin/bash : /dev/vda에대한 쓰기 작업을 초당 1mb로 제한
$ docker run -it --rm --device-write-bps /dev/vda:10mb ubuntu /bin/bash : /dev/vda에대한 쓰기 작업을 초당 10mb로 제한
$ docker run -it --rm --device-write-iops /dev/vda:10 ubuntu /bin/bash ,
$ docker run -it --rm --device-write-iops /dev/vda:100 ubuntu /bin/bash : IOPS의 값은 각각 10,100
docker stat : 실행중인 컨테이너의 런타임 통계를 확인
`docker stats [OPTIONS][CONTAINER...]
docker event : 도커 호스트의 실시간 event 정보를 수집해서 출력
docker events -f container=<MAME>
docker image -f container=<MAME>
cAdvisor(모니터링 어플리케이션)
https://github.com/google/cadvisor