1. 개요

도커 호스트 시스템에서 리소스 사용을 제한해야 하는 경우가 많이 있습니다.

이 사용방법(예제)에서는 도커 컨테이너의 메모리 및 CPU 제한을 설정하는 방법을 배웁니다.

2. docker run으로 리소스 제한 설정하기

docker run 명령을 사용하여 리소스 제한을 직접 설정할 수 있습니다 . 간단한 솔루션입니다. 그러나 이 제한은 이미지의 특정 실행에만 적용됩니다.

2.1. 메모리

예를 들어 컨테이너가 사용할 수 있는 메모리를 512MB로 제한해 보겠습니다. 메모리를 제한하려면 m  매개변수 를 사용해야 합니다 .

$ docker run -m 512m nginx

예약이라는 소프트 한도를 설정할 수도 있습니다. docker가 호스트 시스템에서 메모리 부족을 감지하면 활성화됩니다.

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

2.2. CPU

기본적으로 호스트 시스템의 컴퓨팅 성능에 대한 액세스는 무제한입니다. cpus  매개변수를 사용하여 CPU 제한을 설정할 수 있습니다 예를 들어 컨테이너가 최대 2개의 CPU를 사용하도록 제한해 보겠습니다.

$ docker run --cpus=2 nginx

CPU 할당의 우선 순위를 지정할 수도 있습니다. 기본값은 1024이며 숫자가 높을수록 우선 순위가 높습니다.

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

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

3. docker-compose 파일로 메모리 제한 설정하기

docker-compose 파일을 사용하여 비슷한 결과를 얻을 수 있습니다. 형식과 가능성은 docker-compose 버전에 따라 다릅니다 .

3.1. 버전 3 이상, docker swarm 포함

Nginx 서비스에 CPU의 절반과 512MB의 메모리를 제한하고 CPU의 1/4과 128MB의 메모리를 예약하도록 합시다. 서비스 구성에서 " 배포 " 및 " 리소스 " 세그먼트 를 생성해야 합니다 .

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

의 장점 활용하려면 배포  고정 표시기-작성 파일에 세그먼트를, 우리는 사용할 필요가 고정 표시기 스택 명령을 사용합니다. 떼에 스택을 배포하려면, 우리는 실행 배포 명령을 :

$ docker stack deploy --compose-file docker-compose.yml bael_stack

3.2. 버전 2 docker-compose 포함

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

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

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

$ docker-compose up

4. 리소스 사용 확인

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

$ docker stats
CONTAINER ID        NAME                                             CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
8ad2f2c17078        bael_stack_service.1.jz2ks49finy61kiq1r12da73k   0.00%               2.578MiB / 512MiB   0.50%               936B / 0B           0B / 0B             2

5. 요약

이 사용방법(예제)에서는 호스트 리소스에 대한 도커의 액세스를 제한하는 방법을 살펴보았습니다. docker rundocker-compose 명령의 사용법을 살펴보았습니다 . 마지막으로 docker stats 를 사용 하여 리소스 소비를 제어했습니다 .

Generic footer banner