centos7下安裝docker(9容器對資源的使用限制-內存)
一個docker Host上面會運行若幹容器,每個容器都需要CPU,內存和IO資源。容器提供了控制分配多少CPU,內存給每個容器的機制,避免摸個容器因占用太多資源而影響其他容器乃至整個Host的性能。
內存限額
與操作系統類似:容器使用的內存包括兩部分:物理內存和swap內存
1.可以使用參數來控制容器內存的使用量
-m或者是--memory:設置內存使用限額,例如:100M,2G
--memory-swap : 設置內存+swap的使用限額(總內存)
設置物理內存為400M swap內存為100M
2.使用progrium/stress鏡像
下載鏡像
運行一個progrium/stress鏡像的容器
--vm 1:啟動一個線程
--vm-bytes 280M :為這個線程分配280M內存
因為280M內存在300M範圍內,所以能夠正常運行,其過程是:
1.分配280M內存
2.釋放280M內存
3.再分配280M內存
4.釋放280M內存
5.一直循環下去。。。。。
但是當我們運行一個比內存大的線程時,系統是否正常?
由於分配的內存超過限額,stress線程報錯,容器退出
當我們在運行容器只指定了-m而沒有指定--memory-swap時,--memory-swap默認是-m指定的兩倍
使用docker 的-m的參數進行容器內存分配的時候,內核可能會出現一下錯誤:
Your kernel does not support swap limit capabilities.memory limit without swap:這是由於內核不支持限制內存的設置
解決辦法是:vim /etc/default/grub
修改為:
或者:GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
重啟後可以解決
centos7下安裝docker(9容器對資源的使用限制-內存)