Docker?Compose中如何限制容器的CPU和內(nèi)存使用
正文
最近我在使用開(kāi)源統(tǒng)計(jì)Umami過(guò)程中,發(fā)現(xiàn)CPU和內(nèi)存經(jīng)常占滿(mǎn),導(dǎo)致其它服務(wù)都不能正常使用。Umami我使用的docker-compose
進(jìn)行部署,于是打算使用docker-compose
限制下容器的CPU和內(nèi)存使用來(lái)解決這個(gè)問(wèn)題。
吐槽
于是我就去搜索相關(guān)文檔尋找限制容器資源使用率的方法,給我的感覺(jué)是Docker官方在設(shè)計(jì)docker-compose的時(shí)候有點(diǎn)混亂。
- 首先是
docker-compose
的版本分1.x
和2.x
不同版本特性不一樣 docker-compose.yaml
里面的version
又分多個(gè)版本(1.x-3.x),不同的版本特性不一樣- 官方似乎沒(méi)有明確的文檔指名各版本的區(qū)別,而且升級(jí)版本的速度還賊快
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é)點(diǎn)位置,上面這部分限制的含義是:
Umami服務(wù)的CPU使用被限制在最多50%的CPU能力,內(nèi)存使用被限制在最多500MB。同時(shí),這個(gè)服務(wù)至少需要25%的CPU和200MB的內(nèi)存。
我們啟動(dòng)的時(shí)候命令需要發(fā)生一些變化,否則不會(huì)生效:
#原本的啟動(dòng)命令為 docker-compse up -d # 需要添加一個(gè)參數(shù)--compatibility表示以兼容模式來(lái)運(yùn)行 docker-compose --compatibility up -d
這里的關(guān)鍵在于添加--compatibility
參數(shù)以兼容模式來(lái)運(yùn)行,否則限制不會(huì)生效。
驗(yàn)證
通過(guò)上述方法限制容器CPU和內(nèi)存后,再繼續(xù)使用命令:docker stats
查看容器資源使用情況:
可以看到umami
這個(gè)容器被成功限制為500MB
內(nèi)存。
總結(jié)
- docker-compose的版本設(shè)計(jì)非?;靵y,且沒(méi)找到明確的官方特性對(duì)比說(shuō)明
docker-compose.yaml
限制內(nèi)存需要添加deploy.resources.limits
節(jié)點(diǎn)docker-compose
命令啟動(dòng)的時(shí)候需要添加--compatibility
參數(shù)以兼容模式來(lái)運(yùn)行,否則限制不會(huì)生效
以上就是Docker Compose中限制容器的CPU和內(nèi)存使用?的詳細(xì)內(nèi)容,更多關(guān)于Docker Compose限制CPU的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Idea通過(guò)docker compose?發(fā)布項(xiàng)目的過(guò)程
這篇文章主要介紹了Idea結(jié)合docker-compose發(fā)布項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08docker安裝RabbitMq添加用戶(hù)實(shí)現(xiàn)方式
這篇文章主要介紹了docker安裝RabbitMq添加用戶(hù)實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Docker容器開(kāi)啟設(shè)置自動(dòng)啟動(dòng)的實(shí)現(xiàn)方法
通過(guò)在Docker中設(shè)置容器的默認(rèn)啟動(dòng)命令,我們可以實(shí)現(xiàn)在容器啟動(dòng)時(shí)自動(dòng)啟動(dòng)服務(wù)的功能,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Windows(Win11)如何安裝Docker(Docker Desktop)
這篇文章主要介紹了Windows(Win11)如何安裝Docker(Docker Desktop),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Docker Overlay2磁盤(pán)空間占用過(guò)大清理的方法實(shí)現(xiàn)
隨著業(yè)務(wù)量的不斷增大,容器的不斷啟動(dòng),往往會(huì)出現(xiàn)磁盤(pán)空間不足,本文主要介紹了Docker Overlay2磁盤(pán)空間占用過(guò)大清理的方法實(shí)現(xiàn),感興趣的可以了解一下2022-03-03基于Docker搭建Redis主從集群的實(shí)現(xiàn)
本文基于Docker+Redis5.0.5版本,通過(guò)cluster方式創(chuàng)建一個(gè)6個(gè)redis實(shí)例的主從集群,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05docker 搭建基于prometheus的監(jiān)控體系步驟實(shí)現(xiàn)
本文主要介紹了docker 搭建基于prometheus的監(jiān)控體系步驟實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05docker start啟動(dòng)容器后仍然exit狀態(tài)的解決
這篇文章主要介紹了docker start啟動(dòng)容器后仍然exit狀態(tài)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06docker?pull出現(xiàn)錯(cuò)誤或速度慢具體解決辦法
docker pull的時(shí)候速度特別慢,急死我了,相信看到文章的你跟我是一個(gè)心情,下面這篇文章主要給大家介紹了關(guān)于docker?pull出現(xiàn)錯(cuò)誤或速度慢的具體解決辦法,需要的朋友可以參考下2024-05-05