[따배도] 7-1.Container 관리하기 (이론)
( 참고 : 따배도 https://www.youtube.com/watch?v=NLUugLQ8unM&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi )
Contents
- Container 하드웨어 리소스 제한
- Container Monitoring Tool
Q1. Container 하드웨어 리소스 제한
Container는 기본적으로 호스트 HW 사용 제한이 없다. (따로 걸어놓지 않는 이상)
Docker command를 통해 제한할 수 있는 리소스
- CPU
- Memory
- Disk I/O
docker run --help
- 이를 통해 다양한 리소스 제한 명령어를 확인할 수 있다
(1) Memory 리소스 제한
옵션 | 의미 |
---|---|
–memory, -m | 최대 메모리양 지정 |
–memory-swap | 스왑 메모리 영역에 대한 설정. “메모리+스왑” 합친 값 ( 생략 시, 메모리의 2배 만큼 ) |
–memory-reservation | –memory 값 보다 적은 값으로 구성하는 soft 제한 설정 |
–oom-kill-disable | OOM killer가 프로세스를 kill하지 못하도록 보호 |
docker run -d -m 512m nginx:1.14
- nginx 컨테이너가 사용할 수 있는 최대 메모리는 512MB
docker run -d -m 1g --memory-reservation 500m nginx:1.14
-
nginx 컨테이너 최소 500MB는 사용할 수 있도록 보장 받는다
( 최대 = 1G 까지 사용 가능 )
docker run -d -m 200m --memory-swap 300m nginx:1.14
- nginx 컨테이너는 (스왑=100MB), (메모리=200MB) 까지 사용 가능
docker run -d -m 200m --oom-kill-disable nginx:1.14
- OOM = Out of Memory
- (일반적으로) 메모리가 꽉 차면, 리눅스 커널은 OOM killer를 동작시켜서 프로세스들을 kill한다. 이를 못하도록 하는 명령어이다.
(2) CPU 리소스 제한
옵션 | 의미 |
---|---|
–cpus | 최대 이용 가능 CPU core 수 |
–cpuset-cpus | CPU나 코어를 할당 cpu index는 0부터 시작<br / |
–cpu-share | CPU 비중을 1024값을 기반으로 설정 |
docker run -d --cpus='.5' ubuntu:1.14
- \(0.5\) 만큼의 코어 사용 가능
docker run -d --cpu-shares 2048 ubuntu:1.14
- 다른 Container보다 2배 많이 할당받음 ( 1024 x 2= 2048 )
- 상대적 가중치
docker run -d --cpuset-cpus 0-3 ubuntu:1.14
- 0~3번 index의 CPU 사용 가능
(3) Block I/O 제한
옵션 | 의미 |
---|---|
–blkio-weight –blkio-weight-device |
Block IO의 Quota 설정 100~1000까지 선택 (default : 500) |
–device-read-bps –device-write-bps |
특정 디바에스에 대한 읽기/쓰기 작업 제한 ( 단위 : kb, mb, gb ) |
–device-read-iops –device-write-iops |
Container의 일기/쓰기 속도의 Quata 설정 초당 Quota를 제한해서 I/O를 발생시킴 초당 데이터 전송량 = IOPS * 블럭 크기 |
docker run -it --rm --blkio-weight 100 ubuntu:latest /bin/bash
docker run -it --rm --device-write-bps /dev/vda:1mb ubuntu:latest /bin/bash
docker run -it --rm --device-write-iops /dev/vda:100 ubuntu:latest /bin/bash
Q2. Container Monitoring Tool
Docker monitoring commands
docker stat
- 컨테이너의 runtime 통계 확인
- ex)
docker stats [OPTIONS] [CONTAINER...]
docker event
- Docker HOST의 실시간 event 정보 수집 후 출력
- ex)
docker events -f container=<NAME>
docker image -f container=<NAME>
cAdvisor
- 구글에서 만든 docker 모니터링 툴
- https://github.com/google/cadvisor