Docker 资源控制

以前一直作docker的实验,但是遇到了好多问题,在ubuntu 12.04 环境下很难模拟出真实机器的环境,(尤为是hosts文件没法修改,服务没法启动。。。),就转战vagrant,放弃了一段时间。docker

最近docker 0.10 发布加上ubuntu14.04 的感受docker用起来和顺手多了,因此捡起来慢慢研究。ubuntu

docker和vagrant相比各有各的优点,之因此选择docker 是由于快,vagrant启动一个环境大概须要40s左右,而docker是几s,各方面也很灵活的打包,不过对于资源的掌控仍是不能驾轻就熟。bash

好比增长网卡,控制网卡的ip,控制内存的大小。spa

 

1.  如何增长一个额外的网卡并指定ip地址vagrant

能够经过--lxc-conf指定(0.7.2环境下可用,新版本还在研究)orm

 

2.  限制内存的使用ip

docker的命令中有一个-m参数能够限制容器使用的内存大小内存

  -m, --memory="": Memory limit (format: <number><optional unit>, where unit = b, k, m or g)资源

加上-m参数通常会直接返回:WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.it

须要修改启动参数,重启

在/etc/default/grub中添加

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

执行sudo update-grub,并重启

docker run -i -t -m 32m  ubuntu /bin/bash

进入容器,free -m 发现内存并无变化(和host同样),可是确实在cgroup中作了限制,能够尝试用dd 消耗内存,看宿主的内存变化

事实上,已经被限制在32m的使用量了。

 

3.  限制cpu的使用

docker是基于lxc实现的,lxc又是基于cgroups完成,因此对于cpu的控制也是很随意的(O(∩_∩)O~)。

  -c, --cpu-shares=0: CPU shares (relative weight)

docker run -i -t -m 32m -c 512 ubuntu /bin/bash

(1024 是基数,512就是分配为正常的一半的时间权重,2048就是正常的一倍,固然也能够是任意数值,只不过512 和 1024 比较好算比例)

 

未完待续。。。

相关文章
相关标签/搜索