[Docker 따도배] 컨테이너 리소스 관리

do yeon kim·2022년 8월 21일
0

Docker

목록 보기
7/10

Container 관리하기

컨테이너 하드웨어 리소스 제한 어떻게 할까?

하드웨어의 리소스란 디스크, cpu, 메모리 등을 리소스라고 한다.
Docker Host도 디스크, cpu, 메모리 등의 리소스를 가지고 있다.
Docker Host에 하나의 컨테이너를 만들고, 컨테이너를 사용하는 경우 해당 컨테이너는 어느정도의 리소스를 사용하는가?
특별히 제한을 두지 않으면 Docker Host의 모든 리소스를 사용할 수 있다.
하지만 이런 경우 다른 컨테이너가 있으면, 다른 컨테이너가 사용할 리소스가 부족해진다.

그렇기 때문에 컨테이너가 필요로 하는 만큼만 리소스를 할당해주어야 하고, 컨테이너의 리소스 제한이 필요하다.


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

  • Memory
  • CPU
  • Disk I/O, Block I/O

docker run [옵션] 옵션을 줌으로써 리소스에 대한 제한 할 수 있다.



Memory 리소스 제한

--memory, -m 컨테이너가 사용할 최대 메모리 양을 지정

--memory-swap
swap는 디스크를 메모리처럼 사용하는 것이다. 컨테이너가 스압 메모리 영역에 대한 설정, 메모리+스압, 생략 시 메모리의 2배가 설정된다.

--memory-reservation
--momory 값보다 적은 값으로 구성하는 소프트 제한 값 설정, 최소한 ~값을 보장받는다.

--oom-kill-disable
OOM Killer가 프로세스 kill 하지 못하도록 보호, 실제 메모리가 부족해도 자동으로 kill 하지 못하게 한다.



CPU 리소스 제한

--cups
컨테이너에 할당한 CPU core수를 지정, --cpu="1.5" 컨테이너가 최대 1.5개의 cpu파워 사용가능

--cupset-cpus
컨테이너가 사용할 수 있는 cpu나 코어를 할당. cpu index는 0부터 --cpuset-cpus=0-4

--cups-share
컨테이너가 사용하는 cpu비중을 1024 값을 기반으로 설정 --cpu-share 2048 기본 값보다 두배 많은 cpu 자원을 할당, 상대적 기준치를 가지고 할당할 경우 사용한다.



Block I/O 제한



컨테이너 사용 리소스를 확인하는 모니터링 툴이 있을까?
  • Docker Monitoring commands
    docker stat 실행중인 컨테이너의 런타임 통계를 확인
    docker event 도커 호스트의 실시간 event 정보를 수집해서 출력

  • cAdvisor
    Docker Monitoring Tool 이다.



실습

리눅스 부하 테스트 프로그램
stress --cpu2 2는 cpu core 개수를 말한다.
stress --vm 2 --vm bytes <사용할 크기>



https://www.youtube.com/watch?v=7HA_00KNtbc&list=PLApuRlvrZKogb78kKq1wRvrjg1VMwYrvi&index=17

0개의 댓글