之前一直做docker的實驗,可是遇到了好多問題,在ubuntu 12.04
環境下很難模拟出真實機器的環境,(尤其是hosts檔案無法修改,服務無法啟動。。。),就轉戰vagrant,放棄了一段時間。
最近docker 0.10 釋出加上ubuntu14.04 的感覺docker用起來和順手多了,是以撿起來慢慢研究。
docker和vagrant相比各有各的優勢,之是以選擇docker
是因為快,vagrant啟動一個環境大概需要40s左右,而docker是幾s,各方面也很靈活的打包,不過對于資源的掌控還是不能得心應手。
比如增加網卡,控制網卡的ip,控制記憶體的大小。
1. 如何增加一個額外的網卡并指定ip位址
可以通過--lxc-conf指定(0.7.2環境下可用,新版本還在研究)
2. 限制記憶體的使用
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.
需要修改啟動參數,重新開機
在/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 比較好算比例)
未完待續。。。