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

Posted

技术标签:

【中文标题】将 Docker 容器限制为单个 cpu 核心【英文标题】:Limiting a Docker Container to a single cpu core 【发布时间】:2014-11-17 20:59:27 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

如果您使用旧版本的 Docker (--lxc-conf 来配置分配的 CPU 内核:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

仅链接的答案没有用,因为链接可能会失效。将相关信息放在答案中。

以上是关于将 Docker 容器限制为单个 cpu 核心的主要内容,如果未能解决你的问题,请参考以下文章

为 Docker 容器设置 CPU 的绝对限制

Docker02:Docker核心技术探索使用cgroup限制资源的使用

Docker: 限制容器可用的 CPU

Docker 运行时资源限制

Docker 运行时资源限制

docker容器资源配额控制