Допустим, я запускаю многопроцессорную службу внутри контейнера докеров, порождая несколько процессов, будет ли докер использовать все / несколько ядер / процессоров хоста или только один?
Допустим, я запускаю многопроцессорную службу внутри контейнера докеров, порождая несколько процессов, будет ли докер использовать все / несколько ядер / процессоров хоста или только один?
Ответы:
Как упоминает Чарльз, по умолчанию можно использовать все, или вы можете ограничить его для каждого контейнера с помощью --cpuset-cpus
параметра.
docker run --cpuset-cpus="0-2" myapp:latest
Это ограничит контейнер 3 процессорами (0, 1 и 2). Дополнительные сведения см. В документации по запуску докеров .
Предпочтительный способ ограничения использования ЦП контейнерами - частичное ограничение ЦП:
docker run --cpus 2.5 myapp:latest
Это ограничит ваш контейнер 2,5 ядрами на хосте.
Наконец, если вы запустите докер внутри виртуальной машины, включая Docker для Mac, Docker для Windows и докер-машину, эти виртуальные машины будут иметь ограничение ЦП отдельно от самого ноутбука. Docker работает внутри этой виртуальной машины и будет использовать все ресурсы, предоставленные самой виртуальной машине. Например, с Docker для Mac у вас есть следующее меню:
Возможно, ваша виртуальная машина по умолчанию имеет только одно ядро. Поэтому вам следует сначала увеличить количество ЦП виртуальной машины, а затем использовать параметр --cpuset-cpus, чтобы увеличить количество ядер докеров . Вы можете удалить виртуальную машину docker по умолчанию, используя следующую команду, после чего вы можете создать другую виртуальную машину с дополнительным счетчиком процессоров и размером памяти . :
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
--cpuset-cpus
, хотите ли вы это изменить.