여러 프로세스를 생성하는 도커 컨테이너 내 에서 다중 처리 서비스를 실행하고 있다고 가정 해 보겠습니다.도 커가 호스트의 모든 / 다중 코어 / CPU를 사용합니까, 아니면 하나만 사용합니까?
여러 프로세스를 생성하는 도커 컨테이너 내 에서 다중 처리 서비스를 실행하고 있다고 가정 해 보겠습니다.도 커가 호스트의 모든 / 다중 코어 / CPU를 사용합니까, 아니면 하나만 사용합니까?
답변:
Charles가 언급했듯이 기본적으로 모두 사용할 수 있거나 --cpuset-cpus
매개 변수를 사용하여 컨테이너별로 제한 할 수 있습니다 .
docker run --cpuset-cpus="0-2" myapp:latest
그러면 컨테이너가 3 개의 CPU (0, 1, 2)로 제한됩니다. 자세한 내용은 Docker 실행 문서 를 참조하세요.
컨테이너의 CPU 사용량을 제한하는 선호되는 방법은 CPU에 대한 분수 제한을 사용하는 것입니다.
docker run --cpus 2.5 myapp:latest
그러면 컨테이너가 호스트의 2.5 코어로 제한됩니다.
마지막으로 Mac 용 Docker, Windows 용 Docker 및 docker-machine을 포함하여 VM 내부에서 docker를 실행하는 경우 해당 VM에는 랩톱 자체와 별도의 CPU 제한이 있습니다. Docker는 해당 VM 내부에서 실행되며 VM 자체에 제공된 모든 리소스를 사용합니다. 예를 들어 Mac 용 Docker를 사용하면 다음 메뉴가 있습니다.
호스트 VM에는 기본적으로 하나의 코어 만있을 수 있습니다. 따라서 먼저 VM cpu-count를 늘린 다음 --cpuset-cpus 옵션을 사용 하여 docker 코어를 늘려야합니다. 다음 명령을 사용하여 docker 기본 VM을 제거한 다음 선택적 cpu-count 및 메모리 크기를 사용하여 다른 VM을 만들 수 있습니다 . :
docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default
이 단계 후에 이미지를 실행하기 전에 코어 수를 지정할 수 있습니다. 이 명령은 총 8 개의 코어 중 4 개의 코어를 사용합니다.
docker run -it --cpuset-cpus="0-3" your_image_name
그런 다음 다음 명령을 사용하여 이미지에서 사용 가능한 코어 수를 확인할 수 있습니다.
nproc
--cpuset-cpus
변경하고 싶은지 확인 하십시오 .