🌱 Infra/Container_Docker

[Docker-Basic (4)] Container Quota 사용하기

mini_world 2020. 9. 28. 14:40

 


 

이번 포스팅에서는 컨테이너에 CPU, Memory를 할당하는 방법을 설명합니다.

 

1. 컨테이너 메모리 할당

   1-1 ) 컨테이너에 메모리 할당하기

컨테이너를 시작할때 컨테이너에서 사용 가능한 리소스 크기를 지정할 수 있습니다 :)
먼저 메모리를 100m 지정하여 컨테이너를 실행해봅시다.

[root@docker /]# docker run --name nginx -d -p 8080:80 --memory="100m" nginx
9fc9ccbf2a551a2bd4911d096a545b105c63762f9affb900390431a3df0402a0

docker inspect 명령어를 사용해서 컨테이너에 대한 자세한 정보를 확인할 수 있습니다.
컨테이너에 정말 메모리 할당량이 설정 되었는지 확인해봅니다.

[root@docker /]# docker container inspect nginx | grep Memory
            "Memory": 104857600,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 209715200,
            "MemorySwappiness": null,

 

  1-2) 메모리 업데이트 하기

메모리를 100m에서 200m로 업데이트 합니다.

[root@docker /]# docker container update --memory='200m' nginx
nginx

메모리 스왑 크기도 500m로 변경합니다.

[root@docker /]# docker container update --memory-swap='500m' nginx
nginx

변경 내용이 잘 반영 되었는지 inspect 명령어를 사용하여 확인해봅니다.

[root@docker /]# docker container inspect nginx | grep Memory
            "Memory": 209715200,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 524288000,
            "MemorySwappiness": null,

 

* 메모리 뿐만 아니라, 여러가지 옵션을 업데이트할 수 있습니다.
docs.docker.com/engine/reference/commandline/container_update/

 

 

2. 컨테이너 CPU 할당

  2-1) CPU 고정 할당 하기

특정 컨테이너에 고정된 CPU자원을 할당할수 있습니다.
컨테이너에 물리 CPU를 고정해서 할당해주는 명령어 입니다. --cpuset-cpus=1 뜻은 2번 CPU만 써라(고정할당) 라는 의미 입니다.

[root@docker /]# docker container run --name nginx -d -p 8080:80 --cpuset-cpus=1 nginx
37f6b2d8ff927c8357f3bc54aa2cea612b3baed5ca8c6bd493a77f6c20bfa48c

할당이 잘 되었는지 확인해볼까요? 
1번 CPU가 할당 되었습니다.

[root@docker /]# docker container inspect nginx | grep Cpuset
            "CpusetCpus": "1",
            "CpusetMems": "",

 

 2-2) CPU 개수 선택

특정 CPU를 고정해서 사용하도록 할당하는것 외  CPU를 최대 몇개까지 사용할 수 있도록 할지도 설정이 가능합니다.
할당해봅시다.

[root@docker /]# docker run --name nginx -d -p 8080:80 --cpus=2 nginx
6b8152cdb30970d639d6ce81aaec6f6d6a16a6159f3e68c4e28578215ca29a9e

컨테이너에 할당된 CPU를 확인해봅니다.

[root@docker /]# docker container inspect nginx | grep NanoCpu
            "NanoCpus": 2000000000,
728x90