共计 1269 个字符,预计需要花费 4 分钟才能阅读完成。
最近我在应用开源统计 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
参数以兼容模式来运行,否则限度不会失效
此文章首发于我的独立博客:https://blog.xiaoz.org/archives/18729
正文完