正如这个问题的标题所示,我想为使用 docker (docker.io) 的容器设置最大磁盘/内存和 cpu 使用率。
有没有办法只使用docker来做到这一点?
内存/CPU
Docker 现在支持更多的资源分配选项:
查看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"
贮存
目前限制存储有点棘手。请参阅以下链接了解更多详情:
您现在可以使用 -c 选项为容器分配一定数量的 CPU 份额,如此处所述
据我所知,您只能通过内存限制(即 5MB 限制:docker run -m=5242880 ...image)。但是来自 docker.io 的人计划增加 CPU 限制。
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
看到这个要点: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)