溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker 限制容器對內存的使用詳解

發布時間:2020-08-22 18:19:01 來源:腳本之家 閱讀:383 作者:CloudMan 欄目:服務器

一個 docker host 上會運行若干容器,每個容器都需要 CPU、內存和 IO 資源。對于 KVM,VMware 等虛擬化技術,用戶可以控制分配多少 CPU、內存資源給每個虛擬機。對于容器,Docker 也提供了類似的機制避免某個容器因占用太多資源而影響其他容器乃至整個 host 的性能。

內存限額

與操作系統類似,容器可使用的內存包括兩部分:物理內存和 swap。 Docker 通過下面兩組參數來控制容器內存的使用量。

1、 -m--memory:設置內存的使用限額,例如 100M, 2G。

2、 --memory-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 progrium/stress --vm 1 --vm-bytes 280M

--vm 1:啟動 1 個內存工作線程。

--vm-bytes 280M:每個線程分配 280M 內存。

運行結果如下:

Docker 限制容器對內存的使用詳解

因為 280M 在可分配的范圍(300M)內,所以工作線程能夠正常工作,其過程是:

  1. 分配 280M 內存。
  2. 釋放 280M 內存。
  3. 再分配 280M 內存。
  4. 再釋放 280M 內存。
  5. 一直循環......

如果讓工作線程分配的內存超過 300M,結果如下:

Docker 限制容器對內存的使用詳解

分配的內存超過限額,stress 線程報錯,容器退出。

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

docker run -it -m 200M ubuntu

容器最多使用 200M 物理內存和 200M swap。

內存限額就討論到這里,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女