docker工人如何使用主机操作系统的CPU核心?

基于Docker基于LXC的事实,我的理解是,Docker容器共享来自主机操作系统的各种资源。 我关心的是CPU内核。 这是一个场景:

  • 主机linux操作系统有8个核心
  • 我必须在上面的主机操作系统上部署一组docker容器。
  • 我需要部署的一些docker集装箱将更适合使用2个核心

a)因此,如果我在该主机上运行所有Docker容器,它们是否会按照需要使用CPU /内核,就像它们在该主机操作系统上作为正常安装的应用程序运行一样?

b)Docker容器是否会消耗自己的进程,并且其中包含的所有处理都将卡在该父进程的CPU内核中?

c)如何指定docker容器使用多个核心(例如4个)。 我看到有一个-C标志,可以指向一个核心ID,但似乎没有选项指定容器随机挑选N个核心。

目前,我不认为docker提供这个粒度级别。 它没有指定在它的lxc.conf文件中分配了多less个核心,所以你将得到每个docker的所有核心,可能(或者可能是1,我不是100%确定的)。

但是,你可以调整为给定的容器生成的conf文件,并设置类似的东西

cpuset { cpuset.cpus="0-3"; } 

这可能是最新(less数)版本中的事情发生了变化。 现在你可以使用docker run参数来限制你的docker容器:新docker版本当前答案的等价物是docker run ubuntu /bin/echo 'Hello world --cpuset-cpus="0-3"但是,限制docker进程到这些CPU,但是(请纠正我,如果我错了)其他容器也可以请求相同的集合。 一个可能更好的方法是使用CPU份额。

有关更多信息,请参阅https://docs.docker.com/engine/reference/run/

来自ORACLE文档:

  To control a container's CPU usage, you can use the --cpu-period and --cpu-quota options with the docker create and docker run commands from version 1.7.0 of Docker onward. The --cpu-quota option specifies the number of microseconds that a container has access to CPU resources during a period specified by --cpu-period. As the default value of --cpu-period is 100000, setting the value of --cpu-quota to 25000 limits a container to 25% of the CPU resources. By default, a container can use all available CPU resources, which corresponds to a --cpu-quota value of -1.