将Docker容器限制为单个cpu核心

时间:2014-09-23 15:15:54

标签: docker cpu-usage

我正在尝试构建一个在一致条件下运行代码片段的系统,我认为可行的一种方法是在具有相同布局的docker容器中运行各种程序,保留相同数量的内存等但是,我似乎无法弄清楚如何保持CPU使用率的一致性。

我能找到的最接近的东西是“cpu shares”,如果我理解文档,就会限制cpu使用与系统上运行的其他容器/其他进程有关,以及系统上可用的内容。它们似乎无法将容器限制为绝对的cpu使用量。

理想情况下,我想设置仅限于使用单个cpu核心的docker容器。这有可能吗?

2 个答案:

答案 0 :(得分:33)

如果您使用较新版本的Docker,可以使用--cpuset-cpus=""中的docker run来指定要分配的CPU核心:

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

如果您使用旧版本的Docker(< 0.9),它使用LXC作为默认执行环境,您可以使用--lxc-conf配置分配的CPU核心:

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

在这两种情况下,只有第一个CPU核心可用于docker容器。这两个选项都记录在案in the docker help

答案 1 :(得分:3)

我试图提供有关容器资源分配的教程。

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