我创建了一个容器:
docker run -c=20 -i -t ubuntu:latest /bin/bash
我尝试使用-c
标志来控制CPU使用率并将其最大化50%。当我在容器内运行md5sum /dev/urandom
时,它会占用主机中100%的CPU。
答案 0 :(得分:7)
-c
命令的docker run
标志修改了容器相对于所有其他正在运行的容器的权重的CPU份额权重。
它不限制容器从主机使用CPU。
您可以使用--cpu-quota
标志来限制CPU使用率,例如:
$ docker run -ti --cpu-quota=50000 ubuntu:latest /bin/bash
--cpu-quota
通常与--cpu-period
一起使用。请参阅Docker运行参考文档的更多详细信息:
https://docs.docker.com/reference/run/#runtime-constraints-on-resources
答案 1 :(得分:6)
您似乎正在运行单个容器,因此这是预期的结果。
您可能会发现this博文有用。
默认情况下,每个新容器都有1024个CPU份额。这个 当谈到它时,价值并不意味着什么。但是,如果我们 启动两个容器,两者都将使用100%CPU,CPU时间将是 两个容器之间平均分配,因为它们都有 相同的CPU份额(为简单起见,我假设没有 其他进程正在运行。)
答案 2 :(得分:0)
看看这里,这显然是你在寻找的东西:
https://docs.docker.com/engine/reference/run/#cpu-period-constraint
默认CPU CFS(完全公平调度程序)周期为100毫秒。我们可以使用--cpu-period来设置CPU的周期来限制容器的CPU使用率。通常--cpu-period应该使用--cpu-quota。
示例:
$ docker run -it --cpu-period=50000 --cpu-quota=25000 ubuntu:14.04 /bin/bash
如果有1个CPU,这意味着容器每50ms可以获得50%的CPU运行时间。
在 每给定“句号”(微秒),一组只允许消费 “配额”微秒的CPU时间。当CPU带宽消耗一个 组超过此限制(对于该期间),属于其的任务 层次结构将被限制,并且不允许再次运行 周期。