天天看點

Docker 資源控制

之前一直做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 比較好算比例)

未完待續。。。