Disons que j'exécute un service multitraitement dans un conteneur docker engendrant plusieurs processus, est-ce que docker utiliserait tous / plusieurs cœurs / processeurs de l'hôte ou juste un?
Disons que j'exécute un service multitraitement dans un conteneur docker engendrant plusieurs processus, est-ce que docker utiliserait tous / plusieurs cœurs / processeurs de l'hôte ou juste un?
Réponses:
Comme Charles le mentionne, par défaut, tout peut être utilisé, ou vous pouvez le limiter par conteneur en utilisant le --cpuset-cpus
paramètre.
docker run --cpuset-cpus="0-2" myapp:latest
Cela limiterait le conteneur à 3 processeurs (0, 1 et 2). Consultez la documentation d'exécution du docker pour plus de détails.
La meilleure façon de limiter l'utilisation du processeur des conteneurs est avec une limite fractionnaire sur les processeurs:
docker run --cpus 2.5 myapp:latest
Cela limiterait votre conteneur à 2,5 cœurs sur l'hôte.
Enfin, si vous exécutez docker à l'intérieur d'une machine virtuelle, y compris Docker pour Mac, Docker pour Windows et docker-machine, ces machines virtuelles auront une limite de processeur distincte de votre ordinateur portable lui-même. Docker s'exécute à l'intérieur de cette VM et utilisera toutes les ressources données à la VM elle-même. Par exemple, avec Docker pour Mac, vous avez le menu suivant:
Peut-être que votre VM hôte n'a qu'un seul cœur par défaut. Par conséquent, vous devez d'abord augmenter le nombre de processeurs de votre VM , puis utiliser l' option --cpuset-cpus pour augmenter vos cœurs de docker. Vous pouvez supprimer la machine virtuelle par défaut du docker à l'aide de la commande suivante, puis vous pouvez créer une autre machine virtuelle avec un nombre de processeurs et une taille de mémoire facultatifs :
docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default
Après cette étape, vous pouvez spécifier le nombre de cœurs avant d'exécuter votre image. cette commande utilisera 4 cœurs sur un total de 8 cœurs.
docker run -it --cpuset-cpus="0-3" your_image_name
Ensuite, vous pouvez vérifier le nombre de cœurs disponibles dans votre image à l'aide de cette commande:
nproc
--cpuset-cpus
si vous vouliez changer cela.