以前一直作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 比較好算比例)
未完待續。。。