如何检查docker集装箱使用的核心数量?

我一直在使用Docker一段时间,我已经安装了docker并启动了一个容器

docker run -it --cpuset-cpus=0 ubuntu 

当我logindocker控制台并运行

 grep processor /proc/cpuinfo | wc -l 

它显示了3,这是我在主机上的核心数量。

任何想法如何限制资源的容器,以及如何validation限制?

容器不是完整的虚拟机 。 一些内核资源仍然会在主机上显示。

在这种情况下,– --cpuset-cpus=0会修改容器cgroup有权访问的资源,而不是容器可以看到的资源。

validation的一种方法是在容器中运行stress-ng工具:

使用1个CPU将固定在1个核心(使用1/3核心,100%或33%取决于你使用的工具):

 docker run --cpuset-cpus=0 deployable/stress -c 3 

这将使用2个核心(2/3核心,200%/ 66%):

 docker run --cpuset-cpus=0,2 deployable/stress -c 3 

这将使用3(3/3核心,300%/ 100%):

 docker run deployable/stress -c 3 

内存限制是另一个不会出现在内核统计信息中的区域

 $ docker run -m 64M busybox free -m total used free shared buffers cached Mem: 3443 2500 943 173 261 1858 -/+ buffers/cache: 379 3063 Swap: 1023 0 1023 

yamaneks回答包括github问题 。

#20770已经提出这个问题。 文件/sys/fs/cgroup/cpuset/cpuset.cpus反映正确的输出。

cpuset-cpus正在生效,但不会反映在/proc/cpuinfo

它应该在双引号中–cpuset-cpus =“”,–cpuset-cpus =“0”表示它使用cpu0。