我知道你可以做类似
的事情docker build -c 2 .
给容器2个核心,但是你可以做一些事情,比如给容器50%的内存和50%的CPU吗?
答案 0 :(得分:4)
您的示例docker build -c 2 .
,实际上并没有按照您的想法行事。 -c
标志分配cpu-shares,这是一个相对权重,默认值为1024.因此,如果另一个容器运行时使用默认权重并且CPU使用率最大,那么您的构建容器将只获得2/1026 CPU。如果要使用此机制来分配CPU,则需要根据正在运行的容器的数量及其现有权重进行一些数学计算(例如,如果有两个容器以默认权重运行,并且您为第三个容器赋予权重2048年,它将获得2048 /(2048 + 1024 + 1024)或50%的CPU。)
您还可以使用--cpuset-cpus
参数来控制容器运行的核心,我认为这是您正在考虑的内容,但这只会在为所有容器设置时帮助您。 / p>
我认为您实际使用的是--cpu-quota
设置,该设置将使用Linux内核中的Completely Fair Scheduler。默认情况下,该时间段应设置为100000(100m)s,这意味着参数--cpu-quota=50000
应该为容器提供50%的1 CPU。
关于内存,您只能为每个容器设置最大使用量,您无法分配百分比切片。
有关所有这些的详细信息,请参阅https://docs.docker.com/reference/run/#runtime-constraints-on-resources