docker - 如何限制容器内存大小?
怪我咯
怪我咯 2017-04-21 10:56:38
0
4
819

我分别用两种linux系统部署Docker0.8,都没法限制容器的内存大小。具体情况如下:

  1. 用CentOS6.5【内核为3.10.5-3.el6.x86_64】做主机,新建容器,得到结果如下:
# docker run -i -t -d -m 512m centos /bin/bash   
WARNING: WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
9229fe1bac59992337e909cbc5a11f3e0fa81553ad7b136bec95a62181a251fd

该容器新建成功,但不能限制内存大小。

  1. Ubuntu 12.04【内核为3.8.0-38-generic】做主机,并且修正/etc/default/grub,更改$ GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"之后,新建容器,得到结果如下:
# sudo docker run -i -t -m 512m -d ubuntu /bin/bash
89d629ed37d63b67b49ed8c4c11cab653d61d5b85227bdd10c8a9a0a718c686e

看似未报错,登陆该新建的容器里面查看内存【free命令】,发现并未限制。

大家手头的主机都是什么系统,有没有这种情况?如何解决?盼回复,谢谢!

怪我咯
怪我咯

走同样的路,发现不同的人生

reply all(4)
刘奇

The memory on

in the free命令,看的是Hostcontainer.

To check the memory limit of container use this:

cat /cgroup/memory/lxc/{full_container_id}/memory.limit_in_bytes

You can also check the restrictions of other resources under

/cgroup/:

ll /cgroup/
总用量 0
drwxr-xr-x 3 root root 0 3月  17 13:33 blkio
drwxr-xr-x 3 root root 0 3月  17 13:33 cpu
drwxr-xr-x 3 root root 0 3月  17 13:33 cpuacct
drwxr-xr-x 3 root root 0 3月  17 13:33 cpuset
drwxr-xr-x 3 root root 0 3月  17 13:33 devices
drwxr-xr-x 3 root root 0 3月  17 13:33 freezer
drwxr-xr-x 3 root root 0 3月  17 13:33 memory
drwxr-xr-x 3 root root 0 3月  17 13:33 net_cls
洪涛

Owner, I also encountered this problem when I was doing experiments with Ubuntu virtual machine. Please refer to here to solve it
http://docs.docker.com/articles/runmetrics/
The following are key excerpts

If you want to enable memory and swap accounting, you must add the following command-line parameters to your kernel:

$ cgroup_enable=memory swapaccount=1

On systems using GRUB (which is the default for Ubuntu), you can add those parameters by editing /etc/default/grub and extending GRUB_CMDLINE_LINUX. Look for the following line:

$ GRUB_CMDLINE_LINUX=""

And replace it by the following one:

$ GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

Then run sudo update-grub, and reboot.

These parameters will help you get rid of the following warnings:

WARNING: Your kernel does not support cgroup swap limit.
WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
大家讲道理

Does anyone know how to solve this problem on Centos6?
My docker is 1.6.2, Centos is 6.6, and the kernel version is 3.10.81

黄舟

@colin5063

I am CentOS6.7, it should be almost the same

I modified it/etc/grub.conf 在当前使用的内核的kernel项的最后加上cgroup_enable=memory swapaccount=1

reboot

Then cat /proc/cmdline you will find that the configuration has taken effect

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!