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 比較好算比例)

 

未完待續。。。

相關文章
相關標籤/搜索