原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!

原文鏈接地址:『中級篇』容器的資源限制(22)對於容器的資源限制,在容器出來之前有虛擬化技術,我們可以在一個物理機上創建很多虛擬機,對於一台物理機來講他的cpu和內存都是配置有限的,對於虛擬機我們在配置的時候也是可以進行限定的。本節跟上節關聯比較緊密,建議一起學習。

虛擬機配置

  • 內存配置

  • CPU 配置

image.png

容器配置

為什麼配置容器,給大家說個很實際的例子,如果一個虛擬機裡面就一個容器,切這個容器不設置CPU和內存,當容器內的應用一直在運行的時候,它會一直慢慢的吞噬宿主機上的cpu和內存,最終導致的結果是,容器直到佔滿整個內存。這就是不限制的恐怖之處。

  • 內存控制

docker image ls
#限定運行內存是200M+虛擬內存200M 結果是內存是400M,
#通過stress 設置一個一個測試的使用內存是500M,
#也就是400M的內存運行一個要使用500M內存的應用效果是什麼?
docker run --memory=200M liming/unbuntu-stress --vm 1 --verbose --vm-bytes 500M

  • CPU控制

--cpu-share,就是cpu的權重,如果一個物理機裡面有2個容器,A 權重是10,B的權重是5,2個容器佔滿了整個CPU100%,A佔用了整個CPU的66%,B佔用了整個CPU的33%。啟動2個容器,看看效果,不要光說不練,實踐才能出真知。

A容器

>cpu許可權10,名字test11,PID是4342
docker run --cpu-shares=10 --name=test11 liming/ubuntu-stress --cpu 1

B容器

>cpu許可權5,名字test22,PID是4395
docker run --cpu-shares=5 --name=test22 liming/ubuntu-stress --cpu 1

A,B容器的對比

發現是不是容器A佔用了66.6%,B佔用了33.3%,這就是CPU權重的重要性

PS:Docker 底層的核心技術包括

  1. Linux 上的命名空間(Namespaces)
  2. 控制組(Control groups)做資源限制
  3. Union 文件系統(Union file systems)
  4. 容器格式(Container format)分層

推薦閱讀:

相关文章