Docker 限制容器對記憶體的使用詳解

2022-09-25 09:42:11 字數 1090 閱讀 8657

乙個 docker host 上會執行若干容器,每個容器都需要 cpu、記憶體和 io 資源。對於 kvm,vmware 等虛擬化技術,使用者可以控制分配多少 cpu、記憶體資源給每個虛擬機器。對於容器,docker 也程式設計客棧提供了類似的機制避免某個容器因占用太多資源而影響其他容器乃至整個 host 的效能。

記憶體限額

與作業系統類似,容器可使用的記憶體包括兩程式設計客棧部分:物理記憶體和 swap。 docker 通過下面兩組引數來控制容器記憶體的使用量。

1、-m或--memory:設定記憶體的使用限額,例如 100m, 2g。

2、--memoeqqoqdbmhtry-swap:設定記憶體+swap的使用限額。

當我們執行如下命令:

docker run -m 200m --memory-swap=300m ubuntu

其含義是允許該容器最多使用 200m 的記憶體和 100m 的 swap。預設情況下,上面兩組引數為 -1,即對容器記憶體和 swap 的使用沒有限制。

下面我們將使用 progrium/stress 映象來學習如何為容器分配記憶體。該映象可用於對容器執行壓力測試。執行如下命令:

docker run -it -m 200m --memory-swap=300m程式設計客棧 preqqoqdbmhtogrium/stress --vm 1 --vm-bytes 280m

--vm 1:啟動 1 個記憶體工作執行緒。

--vm-bytes 280m:每個執行緒分配 280m 記憶體。

執行結果如下:

因為 280m 在可分配的範圍(300m)內,所以工作執行緒能夠正常工作,其過程是:

如果讓工作執行緒分配的記憶體超過 300m,結果如下:

分配的記憶體超過限額,stress 執行緒報錯,容器退出。

如果在啟動容器時只指定-m而不指定--memory-swap,那麼--memory-swap預設為-m的兩倍,比如:

docker run -it -m 200m ubuntu

容器最多使用 200m 物理記憶體和 200m swap。

記憶體限額就討論到這裡,希望對大家的學習有所幫助,也希望大家多多支援我們。

本文標題: docker 限制容器對記憶體的使用詳解

本文位址:

Docker容器記憶體限制

1.使用docker自帶的 m操作進行記憶體限制時可能會由於核心限制所以出現以下提示 your kernel does not support swap limit capabilities.memory limit without swap必須通過修改grub檔案 etc default grub...

Docker 限制容器可用的記憶體

預設情況下容器使用的資源是不受限制的。也就是可以使用主機核心排程器所允許的最大資源。但是在容器的使用過程中,經常需要對容器可以使用的主機資源進行限制,本文介紹如何限制容器可以使用的主機記憶體。限制容器不能過多的使用主機的記憶體是非常重要的。對於 linux 主機來說,一旦核心檢測到沒有足夠的記憶體可...

Docker 限制容器可用的記憶體

預設情況下容器使用的資源是不受限制的。也就是可以使用主機核心排程器所允許的最大資源。但是在容器的使用過程中,經常需要對容器可以使用的主機資源進行限制,本文介紹如何限制容器可以使用的主機記憶體。限制容器不能過多的使用主機的記憶體是非常重要的。對於 linux 主機來說,一旦核心檢測到沒有足夠的記憶體可...