web-dev-qa-db-fra.com

Limiter un Docker Container à un seul cœur de processeur

J'essaie de construire un système qui exécute des morceaux de code dans des conditions cohérentes, et une façon, j'imagine que cela est possible, d'exécuter les différents programmes dans des conteneurs de docker avec la même disposition, en réservant la même quantité de mémoire, etc. Cependant, Je n'arrive pas à comprendre comment garder l'utilisation du processeur cohérente.

La chose la plus proche que je puisse sembler trouver est les "partages cpu" qui, si je comprends bien la documentation, limitent l'utilisation de cpu en ce qui concerne les autres conteneurs/autres processus en cours d'exécution sur le système et ce qui est disponible sur le système. Ils ne semblent pas capables de limiter le conteneur à une quantité absolue d'utilisation du processeur.

Idéalement, j'aimerais configurer des conteneurs Docker qui se limiteraient à utiliser un seul cœur de processeur. Est-ce possible?

22
mavix

Si vous utilisez une version plus récente de Docker, vous pouvez utiliser --cpuset-cpus="" dans docker run pour spécifier les cœurs de CPU que vous souhaitez allouer:

docker run --cpuset-cpus="0" [...]

Si vous utilisez une ancienne version de Docker (<0.9), qui utilise LXC comme environnement d'exécution par défaut, vous pouvez utiliser --lxc-conf pour configurer les cœurs CPU alloués:

docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0" [...]

Dans ces deux cas, seul le premier cœur de processeur sera disponible pour le conteneur Docker. Ces deux options sont documentées dans l'aide du docker .

34
dcro

J'ai essayé de fournir un didacticiel sur l'allocation des ressources de conteneur.

https://Gist.github.com/afolarin/15d12a476e40c173bf5f

3
Amos Folarin