클라우드컴퓨팅

도커 리소스 사용량 제한하기

salmon16 2024. 4. 7. 11:19

개요

도커 컨테이너는 리소스(CPU, MEM 등)에 제한이 없다.

 

즉 도커가 구동하는 호스트 머신의 자원을 100% 사용할 수 있다.

이렇게 된다면 컨테이너의 리소스 사용량이 증가하게 된다면 Host PC에 영향이 갈 수도 있고 여러 애플리케이션 간에 영향을 미칠 수 있으므로 컨테이너의 리소스를 제한하는 방법에 대해 알아보자 

 

본론

  • 컨테이너가 사용하는 자원량 stats 명령을 통해 확인해 보자 --no-stream 제거 시 지속적으로 확인 가능

  • 위 이미지와 같이 메모리 LIMIT가 호스트 메모리 용량과 같음을 알 수 있다. (약 8G)
  • 메모리 사용량 제한을 update 명령을 사용해 변경을 할 수 있다.

  • CPU 사용량 제한을 변경해 보자 
    • --cpuset-cpus 옵섭을 사용해서 Host Pc의 CPU 중 특정 CPU만 컨테이너가 사용할 수 있도록 지정할 수 있다.
      • --cpuset-cpus = 2, 3 : 3번 4번 CPU만 사용가능 
      • --cpuset-cpus = 1-3 : 2번, 3번, 4번 CPU만 사용가능 
    • --cpus 옵섭을 사용하면 CPU자원 사용을 몇 % 까지 허용할지를 지정할 수 있다.
      • 단일 CPU 코어인 경우
        • --cpus 1 : 100% 사용
        • --cpus 0.5 : 50% 사용
      • CPU 코어 2개인 경우
        • --cpus 1: 각 코어를 50% 사용해서, 총 합이 100%가 되도록 CPU 사용
        • --cpus 0.5 : 각 코어를 25% 사용해서 ,총 합이 50%가 되도록 CPU 사용
    • --cpu-shares 옵션을 사용하면 한 코어에 여러 컨테이너가 실행될 때 CPU를 할당받는 비율을 설정할 수 있다.
      • 컨테이너의 기본 값은 1024로 설정되어있다.
      • docker run -d --cpuset-cpus=3 --cpu-shares 1024 my-db1
        docker run -d --cpuset-cpus=3 --cpu-shares 256 my-db2
        • 두 컨테이너의 CPU가 어떤 비율로 할당받을지 설정할 수 있다.