Docker 限制容器對內(nèi)存的使用詳解
一個 docker host 上會運行若干容器,每個容器都需要 CPU、內(nèi)存和 IO 資源。對于 KVM,VMware 等虛擬化技術(shù),用戶可以控制分配多少 CPU、內(nèi)存資源給每個虛擬機(jī)。對于容器,Docker 也提供了類似的機(jī)制避免某個容器因占用太多資源而影響其他容器乃至整個 host 的性能。
內(nèi)存限額
與操作系統(tǒng)類似,容器可使用的內(nèi)存包括兩部分:物理內(nèi)存和 swap。 Docker 通過下面兩組參數(shù)來控制容器內(nèi)存的使用量。
1、 -m
或--memory
:設(shè)置內(nèi)存的使用限額,例如 100M, 2G。
2、 --memory-swap
:設(shè)置內(nèi)存+swap的使用限額。
當(dāng)我們執(zhí)行如下命令:
docker run -m 200M --memory-swap=300M ubuntu
其含義是允許該容器最多使用 200M 的內(nèi)存和 100M 的 swap。默認(rèn)情況下,上面兩組參數(shù)為 -1,即對容器內(nèi)存和 swap 的使用沒有限制。
下面我們將使用 progrium/stress 鏡像來學(xué)習(xí)如何為容器分配內(nèi)存。該鏡像可用于對容器執(zhí)行壓力測試。執(zhí)行如下命令:
docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M
--vm 1
:啟動 1 個內(nèi)存工作線程。
--vm-bytes 280M
:每個線程分配 280M 內(nèi)存。
運行結(jié)果如下:
因為 280M 在可分配的范圍(300M)內(nèi),所以工作線程能夠正常工作,其過程是:
- 分配 280M 內(nèi)存。
- 釋放 280M 內(nèi)存。
- 再分配 280M 內(nèi)存。
- 再釋放 280M 內(nèi)存。
- 一直循環(huán)......
如果讓工作線程分配的內(nèi)存超過 300M,結(jié)果如下:
分配的內(nèi)存超過限額,stress 線程報錯,容器退出。
如果在啟動容器時只指定-m
而不指定--memory-swap
,那么--memory-swap
默認(rèn)為-m
的兩倍,比如:
docker run -it -m 200M ubuntu
容器最多使用 200M 物理內(nèi)存和 200M swap。
內(nèi)存限額就討論到這里,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker網(wǎng)段和內(nèi)網(wǎng)網(wǎng)段ip沖突導(dǎo)致無法訪問網(wǎng)絡(luò)的兩種解決方法
本文主要介紹了Docker網(wǎng)段和內(nèi)網(wǎng)網(wǎng)段沖突導(dǎo)致無法訪問網(wǎng)絡(luò)的兩種解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06使用Docker搭建Django,Nginx,R,Python部署環(huán)境的方法
本篇文章主要介紹了使用Docker搭建Django,Nginx,R,Python部署環(huán)境的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02教你使用Portainer管理多臺Docker容器環(huán)境的方法
這篇文章主要介紹了Portainer管理多臺Docker容器環(huán)境,本文給大家介紹的非常詳細(xì),包括環(huán)境準(zhǔn)備及管理docker的詳細(xì)過程,需要的朋友可以參考下2021-11-11Jenkins Docker靜態(tài)agent節(jié)點的構(gòu)建過程
這篇文章主要介紹了Jenkins Docker靜態(tài)agent節(jié)點的構(gòu)建,靜態(tài)節(jié)點就是通過java -jar這條命令去啟動起來就可以了,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10docker實現(xiàn)MySQL數(shù)據(jù)同步的方法
docker的一大好處是在本地可以很方便快速的搭建負(fù)載均衡,主從同步等需要多主機(jī)的環(huán)境,本文主要介紹了docker實現(xiàn)MySQL數(shù)據(jù)同步的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03