728x90
컨테이너 리소스 제한 명령어
docker command 를 통해 제한할 수 있는 리소스는
- CPU
- Memory
- Disk I/O 가 있다.
1. Memory 리소스 제한
Memory 리소스 제한
제한 단위는 b, k, m, g로 할당
--memory, -m : 컨테이너가 사용할 최대 메모리 양을 지정
--memory-swap : 컨테이너가 사용할 스왑 메모리 영역에 대한 설정
--memory-reservation : --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정
--oom-kill-disable : OOM Killer가 프로세스 kill 하지 못하도록 보호
$ docker run -d -m 512m nginx
$ docker run -d -m 1g --memory-reservation 500m nginx
: --memory-reservation 1g 메모리를 지정하는데 최소 500메가까지 보장 받는다.
$ docker run -d -m 200m --memory-swap 300m nginx
: swap은 메모리가 200m swap이 300m일 때 swap은 300 - 200으로 swap의 용량은 100m이다.
$ docker run -d -m 200m --oom-kill-disable nginx
: oom-kill 실제 피지컬 메모리가 부족해도 nginx는 죽이지 마라
리눅스에서 부하테스트를 하기위해 dockerfile을 작성했다.
dockerfile을 build하는 모습이다.
부하 테스트를 진행하는 사진입니다.
메모리를 100m를 설정을하고 swap도 100m로 설정을해서 실제로 swap에는 메모리가 없습니다.
5초동안 90m 부하를 일으키는 테스트를 진행했습니다..
정상적으로 실행 되고 있습니다.
5초동안 150m를 진행하였는데 실패하는 화면입니다.
2. CPU 리소스 제한
CPU 리소스 제한
--cpus : 컨테이너에 할당할 CPU core 수를 지정
--cpuset-cpus : 컨테이너가 사용할 수 있는 CPU나 코어를 할당. cpu index는 0부터
--cpu-share : 컨테이너가 사용하는 CPU 비중을 1024값을 기반으로 설정
$ docker run -d --cpus=".5" ubuntu
: .5는 예를 들어 cpu 4개중에 1개를 절반까지 쓸수 있다.
$ docker run -d --cpu-shares 2048 ubuntu
: 디폴트는 1024인데 2048로 설정하면 다른 cpu보다 더 많은 리소스를 할당한다.
$ docker run -d --cpuset-cpus 0-3 ubuntu
3. Block I/O 제한
Block I/O 제한
--blkio-weight : Block IO의 Quota를 설정할 수 있으며 100 ~ 1000까지 선택 default 500
--blkio-weight-device : weight-device는 weight값을 한 device에만 적용시킨다.
--device-read-bps : 특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb단위로 설정
--device-write-bps
--device-read-iops : 컨테이너의 read/write 속도의 쿼터를 설정한다. 초당 quota를 제한해서 I/O를 발생시킴
--device-write-iops : 0이상의 정수로 표기 초당 데이터 전송량 = IOPS * 블럭크기
4. 모니터링
docker stat m4
실행중인 컨테이너의 런타임 통계를 확인하는 명령어이다.
docker events -f container=name
docker image -f container=name
도커 호스트의 실시간 event 정보를 수집해서 출력하는 명령어이다.
cAdvisor이라는 모니터링툴이 있는데 제 맥북 환경에서 실행이 안되어서 모니터링을 못했습니다.
https://github.com/google/cadvisor
728x90
'개발 > Docker' 카테고리의 다른 글
따배도) 맥북 M1 Docker 컨테이너가 사용하는 스토리지 명령어 (0) | 2022.06.22 |
---|---|
따배도) 맥북 M1 no matching manifest, Mounts denied 오류 (0) | 2022.06.22 |
따배도) docker 실행과 종료와 관련된 명령어 (0) | 2022.06.20 |
따배도) Docker 명령어, dockerfile 만들기 및 repo배포 (0) | 2022.06.18 |
맥북 M1 UTM(VM)에서 Ubuntu 설치 (0) | 2022.06.18 |