1. 程式人生 > >centos7下安裝docker(9容器對資源的使用限制-內存)

centos7下安裝docker(9容器對資源的使用限制-內存)

span 解決辦法 9.png doc etc pac out 內核 count

一個docker Host上面會運行若幹容器,每個容器都需要CPU,內存和IO資源。容器提供了控制分配多少CPU,內存給每個容器的機制,避免摸個容器因占用太多資源而影響其他容器乃至整個Host的性能。

內存限額

與操作系統類似:容器使用的內存包括兩部分:物理內存和swap內存

1.可以使用參數來控制容器內存的使用量

-m或者是--memory:設置內存使用限額,例如:100M,2G

--memory-swap : 設置內存+swap的使用限額(總內存)

技術分享

設置物理內存為400M swap內存為100M

2.使用progrium/stress鏡像

來分配容器內存,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容器對資源的使用限制-內存)