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 run 및 docker-compose 명령의 사용법을 살펴보았습니다 . 마지막으로 docker stats 를 사용 하여 리소스 소비를 제어했습니다 .