如何在Docker Compose中限制容器的CPU和内存使用?
2023/5/17 11:22:15
本文主要是介绍如何在Docker Compose中限制容器的CPU和内存使用?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近我在使用开源统计Umami过程中,发现CPU和内存经常占满,导致其它服务都不能正常使用。Umami我使用的docker-compose
进行部署,于是打算使用docker-compose
限制下容器的CPU和内存使用来解决这个问题。
吐槽
于是我就去搜索相关文档寻找限制容器资源使用率的方法,给我的感觉是Docker官方在设计docker-compose的时候有点混乱。
- 首先是
docker-compose
的版本分1.x
和2.x
不同版本特性不一样 -
docker-compose.yaml
里面的version
又分多个版本(1.x-3.x),不同的版本特性不一样 - 官方似乎没有明确的文档指名各版本的区别,而且升级版本的速度还贼快
docker-compose限制CPU和内存
我直接贴出Umami的完整docker-compose.yaml
内容:
--- 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
这部分,注意节点位置,上面这部分限制的含义是:
Umami服务的CPU使用被限制在最多50%的CPU能力,内存使用被限制在最多500MB。同时,这个服务至少需要25%的CPU和200MB的内存。
我们启动的时候命令需要发生一些变化,否则不会生效:
#原本的启动命令为 docker-compse up -d # 需要添加一个参数--compatibility表示以兼容模式来运行 docker-compose --compatibility up -d
这里的关键在于添加--compatibility
参数以兼容模式来运行,否则限制不会生效。
验证
通过上述方法限制容器CPU和内存后,再继续使用命令:docker stats
查看容器资源使用情况:
可以看到umami
这个容器被成功限制为500MB
内存。
总结
- docker-compose的版本设计非常混乱,且没找到明确的官方特性对比说明
-
docker-compose.yaml
限制内存需要添加
节点deploy.resources.limits
-
docker-compose
命令启动的时候需要添加--compatibility
参数以兼容模式来运行,否则限制不会生效
这篇关于如何在Docker Compose中限制容器的CPU和内存使用?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14Docker端口:你真的公开了哪些东西?
- 2024-11-14用DOCKER在家里的实验室里搞些酷炫的玩意儿
- 2024-11-05掌握Docker:高效安全的十大最佳实践
- 2024-11-05在 Docker Compose 中怎么设置端口映射-icode9专业技术文章分享
- 2024-11-05在 Docker Compose 中怎么设置环境变量-icode9专业技术文章分享
- 2024-11-04Docker环境部署项目实战:新手入门教程
- 2024-11-04Docker环境部署资料:新手入门教程
- 2024-11-01Docker环境部署教程:新手入门指南
- 2024-11-01超越Docker:苹果芯片上的模拟、编排和虚拟化方案讲解
- 2024-11-01Docker环境部署:新手入门教程