66

正如这个问题的标题所示,我想为使用 docker (docker.io) 的容器设置最大磁盘/内存和 cpu 使用率。

有没有办法只使用docker来做到这一点?

4

6 回答 6

57

内存/CPU

Docker 现在支持更多的资源分配选项:

  • CPU 份额,通过 -c 标志
  • 内存限制,通过 -m 标志
  • 特定的 CPU 内核,通过 --cpuset 标志

查看docker run --help更多详细信息。

如果使用 lxc 后端 ( docker -d --exec-driver=lxc),可以指定更细粒度的资源分配方案,例如:

docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"\
           --lxc-conf="lxc.cgroup.cpu.shares = 1234"

贮存

目前限制存储有点棘手。请参阅以下链接了解更多详情:

于 2014-08-06T06:22:44.950 回答
8

您现在可以使用 -c 选项为容器分配一定数量的 CPU 份额,如此处所述

于 2013-11-22T11:43:39.457 回答
3

据我所知,您只能通过内存限制(即 5MB 限制:docker run -m=5242880 ...image)。但是来自 docker.io 的人计划增加 CPU 限制。

于 2013-04-23T17:59:56.623 回答
3
于 2015-12-02T13:21:15.997 回答
3

Just a note about -m / --memory --

If you are setting the memory limit but the container is not allocating the amount of memory you are trying to reserve, go into the preferences and adjust the memory being reserved to the docker app as a whole.

I ran into this 'problem' on OS X and wasn't sure why my container was being limited to ~2G when I was specifying --memory=8g

于 2017-02-13T15:10:36.303 回答
1

看到这个要点:https ://gist.github.com/afolarin/15d12a476e40c173bf5f

1)你用--cpu-share='relative-number'给出cpus的相对份额

2)您现在可以对 cpus 施加硬性限制:

--cpuset=""
specify which cpus by numeric id, 0=first, n=nth cpu. specify by contiguous "1-5" or discontiguous "1,3,5" ranges.

如果使用 LXC 而不是默认的 libcontainer,那么您还可以在以下位置指定:

--lxc-conf=[]              
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"

内存:

-m, --memory=""            Memory limit (format: <number><optional unit>, where unit = b, k, m or g)
于 2014-10-23T12:46:51.760 回答