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可用於對容器內存執行壓力測試

下載鏡像

 

運行一個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"

重啟后可以解決

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM