본문 바로가기

따배도 스터디

7-1 컨테이너 리소스를 관리해야지 -이론편

728x90

1.컨테이너 하드웨어 리소스 제한 어떻게 해요 ?

 

기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다.

docker command를 통해 제한할수 있는 리소스

-cpu

-memory

-disk i/o

 

docker run --help

 

docker를 사용하다보면 메모리이슈가 많이생긴다고 한다. 그 이유는 무엇일까 ?

 

도커 컨테이너를 실행할 때 해당 컨테이너는 호스트 운영 체제에서 분리된 프로세스로 실행됩니다. 이 프로세스는 호스트 운영 체제의 리소스를 공유하지만, 가상화된 환경 내에서 독립적으로 실행됩니다. 이러한 가상화된 환경은 각 컨테이너마다 필요한 패키지와 라이브러리 등을 별도로 가지고 있으므로, 메모리 사용량이 높아질 수 있습니다.

도커 이미지를 빌드할 때 사용되는 Dockerfile은 레이어 형태로 구성되어 있으며, 각 레이어는 파일 시스템의 스냅샷입니다. 따라서 이미지 크기가 커지면 메모리 사용량도 더 많아질 수 있습니다.

 

즉, 정리를 하면 도커컨테이너는 호스트 운영체제의 리소스를 공유하지만 가상화된 환경 내에서 독립적으로 실행을 하고,

독립적인 환경에서 각 컨테이너마다 필요한 패키지 및 라이브러리를 별도로 가지고 있기 때문에 메모리 사용량이 높아질수 있다. 또한 이미지크기가 커지면 메모리 사용량이 많아질 수 있다.

 

 

1.512m만 쓰게 할당해주고 그 이상쓰면 자동 kill

2.최대로 1g 500m보장 받는다 (항상 쓸수 있게끔)

3. 메모리 200m까지 쓸수있고, swap사이즈도 300m 그럼 총 500m쓰는건가 ? no  swap memory-할당메모리 만큼만

swap 가능하므로 실제 swap은 100m만 스왑가능

메모리 스왑 생략시 실제메모리의 2배가 설정됨

4. OOM Killer가 프로세스 kill 하지 못하도록 보호

1.0.5는 4개의 코어가 있다면 그중 절반까지만 사용가능하다. 최대사용할수있는 cpu사용량 조절

2.default cpu 비중을 1024값을 기반으로 설정되지만, share 2048 은 기본값보다 두배 많은 cpu자원을 할당

3.cpu가 사용할수있는 코어 갯수 저장 0 1 2 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 * 블럭 크기

 

IOPS: read,write에대한 속도대한 쿼터

 


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

2. 컨테이너 사용 리소스를 확인하는 모니터링 툴이 있나요 ?

 

Docker monitoring commands

 

docker stat

-컨테이너의 runtime 통계 확인

ex) docker stats [OPTIONS][CONTAINERS]

 

docker event: 도커호스트의 실시간 event정보를 수집해서 출력

docker events -f container=<MAME>

docker image -f container=<MAME>

 

cAdvisor

구글에서 만든 docker 모니터링 툴
https://github.com/google/cadvisor

 

728x90