관리 메뉴

피터의 개발이야기

[Docker] Docker에서 CPU 및 메모리 제한 설정 본문

DevOps/Docker

[Docker] Docker에서 CPU 및 메모리 제한 설정

기록하는 백앤드개발자 2023. 9. 26. 17:58
반응형

ㅁ 개요

Docker 호스트 시스템에서 리소스 사용을 제한해야 하는 경우가 많습니다. 이번 글에서는 Docker 컨테이너의 메모리 및 CPU 제한을 설정하는 방법을 정리하였습니다.

 

 

ㅁ 메모리 제한하기

$ docker run -m 512m nginx

 ㅇ 컨테이너가 사용할 수 있는 메모리를 512MB로 제한합니다.

 

$ docker run -m 512m --memory-reservation=256m nginx

 ㅇ 예약이라는 소프트 제한을 설정할 수도 있습니다.

 ㅇ docker가 호스트 시스템의 메모리가 부족한 경우를 대비하여 예약 활성화를 할 수 있습니다.

 

 

ㅁ CPU 제한하기

ㅇ 기본적으로 호스트 시스템의 컴퓨팅 성능에 대한 액세스는 무제한입니다. 

ㅇ CPUs 매개변수를 사용하여 CPU 제한을 설정할 수 있습니다. 

$ docker run --cpus=2 nginx

 ㅇ  2개의 CPU를 사용하도록 컨테이너를 제한합니다.

 

$ docker run --cpus=2 --cpu-shares=2000 nginx

 ㅇ CPU 할당 우선순위를 지정할 수도 있습니다.

 ㅇ 기본값은 1024이며 숫자가 높을수록 우선순위가 높습니다

 ㅇ 메모리 예약과 유사하게 CPU 공유는 컴퓨팅 성능이 부족하고 경쟁 프로세스 간에 나누어야 할 때 주요 역할을 합니다.

 

 

ㅁ docker-compose 파일을 사용하여 메모리 제한 설정

 ㅇ docker-compose 파일을 사용하여 비슷한 결과를 얻을 수 있습니다.

 ㅇ docker-compose 버전에 따라 형식과 가능성이 달라질 수 있습니다.

 

1) 버전 3 이상 (docker swarm 포함)

services:
  service:
    image: nginx
    deploy:
        resources:
            limits:
              cpus: 0.50
              memory: 512M
            reservations:
              cpus: 0.25
              memory: 128M

 ㅇ Nginx 서비스 제한은 CPU 절반과 512MB 메모리, 예약은 CPU 1/4과 128MB 메모리로 제한하겠습니다.

 ㅇ 서비스 구성에서 배포 세그먼트를 생성 한 다음 리소스 세그먼트를 생성해야 합니다.

$ docker stack deploy --compose-file docker-compose.yml bael_stack
 ㅇ docker-compose 파일의 배포 세그먼트를 활용하려면 docker stack 명령  을 사용해야 합니다 .

 ㅇ Swarm에 스택을 배포하기 위해 배포 명령을 실행합니다.

 

2) 버전 2 docker-compose 사용

service:
  image: nginx
  mem_limit: 512m
  mem_reservation: 128M
  cpus: 0.5
  ports:
    - "80:80"

 ㅇ 이전 버전의 docker-compose에서는 서비스의 기본 속성과 동일한 수준에 리소스 제한을 설정할 수 있습니다.

 ㅇ 그리고 이름이 약간 다릅니다.

 

$ docker-compose up

 ㅇ 구성된 컨테이너를 생성하려면 docker-compose 명령을 실행합니다.

 

 

ㅁ 리소스 사용량 확인

 ㅇ 제한을 설정한 후 docker stats 명령을 사용하여 이를 확인할 수 있습니다.

CONTAINER ID   NAME                                  CPU %     MEM USAGE / LIMIT     MEM %     NET I/O         BLOCK I/O         PIDS
e826af5f7208   desktop-jenkins_agent-1               0.49%     188.4MiB / 7.667GiB   2.40%     114MB / 162MB   53.4MB / 23.8MB   41
e705755fae9e   jenkins-docker-jenkins_controller-1   1.14%     2.703GiB / 7.667GiB   35.26%    133MB / 139MB   2.06MB / 213MB    62

 

 

ㅁ 함께 보면 좋은 사이트

https://junstar92.tistory.com/165

 

[Docker] 07. 컨테이너 리소스 할당 제한

Contents 컨테이너 메모리 제한 컨테이너 CPU 제한 Block I/O 제한 컨테이너를 생성하는 run, create 커맨드에서 컨테이너의 리소스 할당량을 조정하도록 옵션을 설정할 수 있습니다. 아무런 옵션을 입력

junstar92.tistory.com

반응형
Comments