Подтвердить что ты не робот

Сколько процессоров использует контейнер докеров?

Допустим, я запускаю многопроцессорную службу внутри контейнера докера, порождая несколько процессов. Будет ли докер использовать все/несколько ядер/процессоров хоста или только один?

4b9b3361

Ответ 1

Как упоминает Чарльз, по умолчанию можно использовать все или ограничить его для каждого контейнера с помощью параметра --cpuset-cpus.

docker run --cpuset-cpus="0-2" myapp:latest

Это ограничило бы контейнер до 3 CPU (0, 1 и 2). Смотрите докер Run Docs для более подробной информации.


Предпочтительный способ ограничения использования ЦП контейнеров - дробное ограничение на ЦП:

docker run --cpus 2.5 myapp:latest

Это ограничит ваш контейнер до 2,5 ядер на хосте.


Наконец, если вы запустите Docker внутри виртуальной машины, включая Docker для Mac, Docker для Windows и Docker-машину, у этих виртуальных машин будет ограничение ЦП отдельно от вашего ноутбука. Docker работает внутри этой виртуальной машины и будет использовать все ресурсы, предоставленные самой виртуальной машине. Например, с Docker для Mac у вас есть следующее меню:

Docker for Mac Advanced settings

Ответ 2

Может быть, ваша виртуальная машина по умолчанию имеет только одно ядро. Поэтому вы должны сначала увеличить количество процессоров в вашей виртуальной машине, а затем использовать опцию --cpuset-cpus, чтобы увеличить количество докеров. Вы можете удалить виртуальную машину Docker по умолчанию с помощью следующей команды, затем вы можете создать другую виртуальную машину с необязательным cpu-count и объемом памяти.:

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default

После этого шага вы можете указать количество ядер перед запуском вашего образа. эта команда будет использовать 4 ядра из 8 ядер.

docker run -it --cpuset-cpus="0-3" your_image_name

Затем вы можете проверить количество доступных ядер в вашем образе с помощью этой команды:

nproc