Docker?Compose中如何限制容器的CPU和內(nèi)存使用
正文
最近我在使用開源統(tǒng)計Umami過程中,發(fā)現(xiàn)CPU和內(nèi)存經(jīng)常占滿,導(dǎo)致其它服務(wù)都不能正常使用。Umami我使用的docker-compose進行部署,于是打算使用docker-compose限制下容器的CPU和內(nèi)存使用來解決這個問題。

吐槽
于是我就去搜索相關(guān)文檔尋找限制容器資源使用率的方法,給我的感覺是Docker官方在設(shè)計docker-compose的時候有點混亂。
- 首先是
docker-compose的版本分1.x和2.x不同版本特性不一樣 docker-compose.yaml里面的version又分多個版本(1.x-3.x),不同的版本特性不一樣- 官方似乎沒有明確的文檔指名各版本的區(qū)別,而且升級版本的速度還賊快
docker-compose限制CPU和內(nèi)存
我直接貼出Umami的完整docker-compose.yaml內(nèi)容:
---
version: '3'
services:
umami:
image: docker.umami.dev/umami-software/umami:mysql-latest
deploy:
resources:
limits:
cpus: '0.50'
memory: 500M
reservations:
cpus: '0.25'
memory: 200M
ports:
- "3000:3000"
environment:
DATABASE_URL: mysql://umami:xxx@127.0.0.1:3306/umami
DATABASE_TYPE: mysql
HASH_SALT: replace-me-with-a-random-string
restart: always
network_mode: "host"限制指令為deploy.resources.limits這部分,注意節(jié)點位置,上面這部分限制的含義是:
Umami服務(wù)的CPU使用被限制在最多50%的CPU能力,內(nèi)存使用被限制在最多500MB。同時,這個服務(wù)至少需要25%的CPU和200MB的內(nèi)存。
我們啟動的時候命令需要發(fā)生一些變化,否則不會生效:
#原本的啟動命令為 docker-compse up -d # 需要添加一個參數(shù)--compatibility表示以兼容模式來運行 docker-compose --compatibility up -d
這里的關(guān)鍵在于添加--compatibility參數(shù)以兼容模式來運行,否則限制不會生效。
驗證
通過上述方法限制容器CPU和內(nèi)存后,再繼續(xù)使用命令:docker stats查看容器資源使用情況:

可以看到umami這個容器被成功限制為500MB內(nèi)存。
總結(jié)
- docker-compose的版本設(shè)計非?;靵y,且沒找到明確的官方特性對比說明
docker-compose.yaml限制內(nèi)存需要添加deploy.resources.limits節(jié)點docker-compose命令啟動的時候需要添加--compatibility參數(shù)以兼容模式來運行,否則限制不會生效
以上就是Docker Compose中限制容器的CPU和內(nèi)存使用?的詳細內(nèi)容,更多關(guān)于Docker Compose限制CPU的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
docker?部署?gitlab-ce?16.9.1的詳細過程
Docker是一個開源的應(yīng)用容器引擎,它允許開發(fā)者將應(yīng)用及其依賴打包到一個可移植的容器中,然后發(fā)布到任何支持Docker的Linux或Windows操作系統(tǒng)上,這篇文章主要介紹了docker?部署gitlab-ce?16.9.1的詳細過程,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-04-04
linux下使用Docker Compose部署Spug實現(xiàn)公網(wǎng)遠程訪問的過程
這篇文章主要介紹了linux下使用Docker Compose部署Spug實現(xiàn)公網(wǎng)遠程訪問,本例演示搭建使用docker compose 方式安裝Spug,并結(jié)合cpolar,需要的朋友可以參考下2023-11-11
使用?Docker?Compose?構(gòu)建復(fù)雜的多容器?App的方法
Docker Compose 工具相當(dāng)于 C/C++ 的 make 工具,使用 make 需要 Makefile,所有的編譯鏈接設(shè)置都在Makefile 中指定,不需要為了運行程序而每次都在終端手動輸入長串的指令,這篇文章主要介紹了使用?Docker?Compose?構(gòu)建復(fù)雜的多容器?App,需要的朋友可以參考下2022-04-04
導(dǎo)出與導(dǎo)入Docker的容器實現(xiàn)示例
本文主要介紹了導(dǎo)出與導(dǎo)入Docker的容器實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
docker搭建redis三主三從集群的實現(xiàn)步驟
本文主要介紹了docker搭建redis三主三從集群,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
在Docker中安裝Elasticsearch7.6.2的教程
這篇文章主要介紹了在Docker中安裝Elasticsearch7.6.2的教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

