[ 2022.11.14 TIL-Docker 컨테이너 리소스 관리]

Docker 컨테이너 리소스 관리
✏️ 실행하려는 컨테이너에 하드웨어 리소스 제한하기
- 컨테이너는 기본적으로 호스트 하드웨어 리소스의 사용 제한을 받지 않음
- 여러 컨테이너를 사용할 때에는 필요로 하는 만큼의 리소스만 할당 해야함
docker run ~
명령어의 옵션을 통해 리소스 제한을 걸어줄 수 있음
- 메모리 리소스 제한
- --memory, -m
- --memory-swap
- 컨테이너가 사용할 스왑 메모리 영역에 대한 설정
- 설정값은 메모리 + 스왑
- 생략 시 메모리의 2배가 설정됨
- --memory-reservation
- --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정
- --oom-kill-disable
- OOM Killer가 프로세스 kill 하지 못하도록 보호
- 물리적인 메모리 공간이 부족하면 OOM Killer를 가동하여 프로세스를 죽임
- CPU 리소스 제한
- --cpus
- --cpuset-cpus
- 컨테이너가 사용할 수 있는 CPU나 코어를 할당
- CPU index는 0부터 시작
- --cpu-share
- 컨테이너가 사용하는 CPU 비중을 1024값을 기반으로 설정
- 상대적인 값으로 2048이면 다른 컨테이너보다 2배많은 리소스 할당
- Block I/O 제한
- --blkio-weight, --blkio-weight-device
- Block IO의 Quata를 설정 가능
- 100 ~ 1000까지 선택, 기본값은 500
- --device-read-bps, --device-write-bps
- 특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정
- --device-read-iops, --device-write-iops
- 컨테이너의 read/write 속도의 쿼터를 설정
- 초당 quota를 제한하여 I/O를 발생
- 0 이상의 정수로 표기
- 초당 데이터 전송량 = IOPS * 블럭크기(단위 데이터 용량)
✏️ 컨테이너가 사용하는 리소스 모니터링하기
- 컨테이너 모니터링 명령어
docker stat
docker event
- 도커 호스트의 실시간 이벤트 정보를 수집해서 출력
- cAdvisor
- 리눅스 부하 테스트 툴
- 부하 테스트 프로그램 stress를 설치하고 동작시키는 컨테이너 빌드
- CPU 부하 테스트
- 2개 CPU 코어를 100% 사용하도록 부하 발생
- stress --cpu 2
- 메모리 부하 테스트
- 프로세스 수 2개와 사용할 메모리만큼 부하 발생
- stress --vm 2 --vm-bytes 사용할크기