一尘不染

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

docker

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

我似乎可以找到的最接近的东西是“
cpu共享”,如果我了解文档,它会限制cpu的使用,限制系统上正在运行的其他容器/其他进程以及系统上的可用资源。它们似乎无法将容器限制为绝对的CPU使用量。

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


阅读 276

收藏
2020-06-17

共1个答案

一尘不染

如果使用较新版本的Docker,则可以使用--cpuset-cpus=""in 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容器。这两个选项都记录在docker帮助中

2020-06-17