Development Tip

Docker를 사용하여 컨테이너에 할당 된 리소스를 어떻게 설정합니까?

yourdevel 2020. 11. 18. 21:33
반응형

Docker를 사용하여 컨테이너에 할당 된 리소스를 어떻게 설정합니까?


이 질문의 제목에서 알 수 있듯이 docker (docker.io)를 사용하여 컨테이너에 대한 최대 디스크 / 메모리 및 CPU 사용량을 설정하고 싶습니다.

Docker를 사용하여 이것을 수행하는 방법이 있습니까?


메모리 / CPU

Docker는 이제 더 많은 리소스 할당 옵션을 지원합니다.

  • -c 플래그를 통한 CPU 공유
  • -m 플래그를 통한 메모리 제한
  • --cpuset 플래그를 통한 특정 CPU 코어

한 번 봐 가지고 docker run --help자세한 내용을.

lxc 백엔드 ( docker -d --exec-driver=lxc) 를 사용하는 경우 보다 세분화 된 리소스 할당 체계를 지정할 수 있습니다. 예 :

docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"\
           --lxc-conf="lxc.cgroup.cpu.shares = 1234"

저장

저장 용량 제한은 현재 조금 더 까다 롭습니다. 자세한 내용은 다음 링크를 참조하십시오.


이제 여기에 설명 된대로 -c 옵션을 사용하여 컨테이너에 여러 CPU 공유를 할당 할 수 있습니다.


내가 아는 것처럼 메모리 제한 (예 : 5MB 제한 : docker run -m = 5242880 ... image) 만 전달할 수 있습니다. 그러나 docker.io의 사람들은 CPU 제한을 추가 할 계획이었습니다.


다음에 대한 참고 사항 -m / --memory-

메모리 제한을 설정했지만 컨테이너가 예약하려는 메모리 양을 할당하지 않는 경우 기본 설정으로 이동하여 전체적으로 도커 앱에 예약되는 메모리를 조정합니다.

나는 OS X 에서이 '문제'에 부딪 쳤고 내가 지정할 때 컨테이너가 ~ 2G로 제한되는 이유를 잘 모르겠습니다. --memory=8g


참고 : PR 15078 은 중지 된 컨테이너 와 실행중인 컨테이너 (아마도 docker 1.10 ou 1.11)에 대한 리소스 변경 지원을 구현 (2015 년 12 월 )합니다.

우리는 리소스라고 부르는 것을 설정하기로 결정했습니다.이 리소스는 지금은 cgroup으로 구성되어 있으므로 PR # 18073 .
컨테이너에서 허용되는 유일한 변경 가능한 요소는 HostConfig에 있으며 정확하게 Resources에 있습니다 ( struct 참조 ).

resources := runconfig.Resources{
        BlkioWeight:       *flBlkioWeight,
        CpusetCpus:        *flCpusetCpus,
        CpusetMems:        *flCpusetMems,
        CPUShares:         *flCPUShares,
        Memory:            flMemory,
        MemoryReservation: memoryReservation,
        MemorySwap:        memorySwap,
        KernelMemory:      kernelMemory,
        CPUPeriod:         *flCPUPeriod,
        CPUQuota:          *flCPUQuota,
    }
  • 명령은 set.
  • 허용 된 변경 사항은 플래그로 전달됩니다. 예 : --memory=1Gb --cpushare=…(이 PR이 수행하는 것처럼).
  • Resources구조체 의 각 속성에 대해 하나의 플래그가 있습니다 (더 이상도 그 이하도 아닙니다).

를 통한 변경 docker set은 지속되어야합니다.
즉, 이러한 변경 사항은 영구적입니다 (컨테이너의 JSON에서 업데이트 됨).


이 요점을 참조하십시오 : https://gist.github.com/afolarin/15d12a476e40c173bf5f

1) --cpu-share = 'relative-number'를 사용하여 CPU의 상대적 몫을 제공합니다.

2) 이제 cpus에 엄격한 제한을 둘 수 있습니다.

--cpuset=""
specify which cpus by numeric id, 0=first, n=nth cpu. specify by contiguous "1-5" or discontiguous "1,3,5" ranges.

기본 libcontainer 대신 LXC를 사용하는 경우 다음에서 지정할 수도 있습니다.

--lxc-conf=[]              
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"

램:

-m, --memory=""            Memory limit (format: <number><optional unit>, where unit = b, k, m or g)

참고 URL : https://stackoverflow.com/questions/16084741/how-do-i-set-resources-allocated-to-a-container-using-docker

반응형