본문 바로가기
Docker/실습

[Docker-실습] 7.Container 리소스 관리

by Haengsin 2021. 9. 9.

※ stress container 생성

컨테이너 빌드 : 부하 테스트 프로그램 stress 를 설치하고 동작시키는 컨테이너 빌드

CPU 부하 테스트 : 2개 cpu core를 100% 사용하도록 부하 발생 : stress --cpu 2

메모리 부하 테스트 : 프로세스 2개와 사용할 메모리만큼 부하 발생 : stress --vm 2 --vm-bytes <사용할 크기>

$vi dockerfile
FROM debian
MAINTAINER jwjeong <metalk2003@gmail.com>
RUN apt-get update; apt-get install stress -y
CMD ["/bin/sh", "-c", "stress -c 2"]

 

 

[Docker 컨테이너 메모리 리소스 제한]

swap 메모리 용량 제한이 실제 메모리 제한과 어떤 관련성이 있는 지 확인

docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s

// -m 100m --memory-swap 100m = 메모리 100m, swap 메모리 0m

// -m 100m --memory-swap 200m = 메모리 100m, swap 메모리 100m

docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s -> (fail)

docker run -m 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s -> (fail)

 

컨테이너를 OOM-Killer 로 부터 보호

OOM-Killer disable 설정.

$docker run -d -m 100M --name v4 --oom-kill-disable=true nginx

$cat /sys/fs/cgroup/memory/docker/컨테이너ID/memory.oom_control

 

 

[CPU 리소스 제한]

CPU 개수를 제한하여 컨테이너를 실행.

$ docker run --cpuset-cpus 1 --name c1 -d stress stress --cpu 1

$ htop

$ docker run --cpuset-cpus 0 --name c2 -d stress stress --cpu 1

$ htop

$ docker rm c1

 

 

[Block I/O 제한]

컨테이너에서 --device-write-iops를 적용해서 write 속도의 초당 quota를 제한해서 I/O write를 발생시킨다.

$ docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash

/# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct

 

다음 write quota를 100으로 변경 후 같은 작업을 반복한다.

$ docker run -it --rm --deivce-write-iops /dev/sda:100 ubuntu:latest /bin/bash

/# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct

Quota가 100인 컨테이너에서의 작업이 훨씬 빠른 것을 확인할 수 있다.

 

 

 

[cAdvisor 설치]

: 컨테이너 모니터링 툴 cAdvisor. 컨테이너 리소스 분석.

https://github.com/google/cadvisor

 

GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

Analyzes resource usage and performance characteristics of running containers. - GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

github.com

(1) cAdvisor 설치

: Docker Host에서 아래 진행.

Quick Start
VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION

(2) 접속 및 사용

http://[ip]:8080/ 로 접속

 

 

※ 이성미, [따배도] 도커 시리즈 , TTABAE-LEARN,https://www.youtube.com/watch?v=TM3DvwwvsLg, 2021-09-10

'Docker > 실습' 카테고리의 다른 글

[Docker-실습] 9.Container Network  (0) 2021.11.15
[Docker-실습] 8.Container Storage  (0) 2021.10.13
[Docker-실습] 6.Container 운영  (0) 2021.08.27
[Docker-실습] 5.Container Registry  (0) 2021.08.23
[Docker-실습] 4.Container 만들기(2)  (2) 2021.08.11