docker如何使用其主机操作系统的CPU内核?

问题描述 投票:41回答:4

基于Docker基于LXC的事实,我的建议是Docker容器从其主机操作系统共享各种资源。我担心的是CPU内核。这是一个场景:

  • 主机linux OS有8种颜色
  • 我必须在上面的主机操作系统上部署一组docker容器。
  • 我需要部署的一些docker容器更适合使用2个内核

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

b)docker容器是否会使用自己的进程,并且其中包含的所有处理都将粘贴到该父进程的CPU核心?

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

docker lxc
4个回答
7
投票

目前,我认为docker不提供这种级别的粒度。它没有指定它在lxc.conf文件中分配的内核数量,因此您将获得每个docker的所有内核(可能是1,我不是100%肯定)。

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

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

6
投票

可能是最新(少数)版本的内容发生了变化。现在你可以使用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/


4
投票

来自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.

2
投票

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

是。

CPU

默认情况下,每个容器对主机CPU周期的访问权限是不受限制的。您可以设置各种约束来限制给定容器访问主机的CPU周期。


docker容器是否会使用自己的进程,并且其中包含的所有处理都将粘贴到该父进程的CPU核心?

不。

Docker使用Completely Fair Scheduler在容器之间共享CPU资源。因此容器具有可配置的CPU访问权限。


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

它是 过度 可配置的。 Docker中有更多的cpu选项可以组合使用。

--cpus =指定容器可以使用的可用CPU资源量。例如,如果主机有两个CPU并且您设置了--cpus =“1.5”,则容器最多只保证一个半CPU。

--cpuset-cpus限制容器可以使用的特定CPU或核心。如果您有多个CPU,则容器可以使用的以逗号分隔的列表或连字符分隔的CPU范围。第一个CPU编号为0.有效值可能是0-3(使用第一个,第二个,第三个和第四个CPU)或1,3(使用第二个和第四个CPU)。

And more...

© www.soinside.com 2019 - 2024. All rights reserved.