Docker Compose中如何限制容器的CPU和内存使用

 更新时间:2023年05月15日 14:05:48   作者:xiangzhihong  
这篇文章主要为大家介绍了Docker Compose中限制容器的CPU和内存使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

最近我在使用开源统计Umami过程中,发现CPU和内存经常占满,导致其它服务都不能正常使用。Umami我使用的docker-compose进行部署,于是打算使用docker-compose限制下容器的CPU和内存使用来解决这个问题。

吐槽

于是我就去搜索相关文档寻找限制容器资源使用率的方法,给我的感觉是Docker官方在设计docker-compose的时候有点混乱。

  • 首先是docker-compose的版本分1.x2.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和内存使用?的详细内容,更多关于Docker Compose限制CPU的资料请关注脚本之家其它相关文章!

相关文章

  • Docker Compose部署微服务项目上线功能

    Docker Compose部署微服务项目上线功能

    这篇文章主要介绍了Docker Compose部署微服务项目上线,需求是这样的编写一个SpringBoot + Redis 的微服务项目,并提供 hello接口,每访问一次接口,计数器+1,本文给大家分享实现思路,需要的朋友可以参考下
    2022-07-07
  • docker 部署 gitlab-ce 16.9.1的详细过程

    docker 部署 gitlab-ce 16.9.1的详细过程

    Docker是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何支持Docker的Linux或Windows操作系统上,这篇文章主要介绍了docker 部署gitlab-ce 16.9.1的详细过程,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-04-04
  • linux下使用Docker Compose部署Spug实现公网远程访问的过程

    linux下使用Docker Compose部署Spug实现公网远程访问的过程

    这篇文章主要介绍了linux下使用Docker Compose部署Spug实现公网远程访问,本例演示搭建使用docker compose 方式安装Spug,并结合cpolar,需要的朋友可以参考下
    2023-11-11
  • Docker镜像远程(离线)迁移实践

    Docker镜像远程(离线)迁移实践

    本文介绍了如何将本地服务器的指定镜像打包为tar格式的文件并通过scp命令将其传输到另一台服务器,scp命令依赖于ssh协议,具有加密传输、跨主机通用和易用性等特点,通过编写bash脚本,可以简化传输过程,并且可以避免每次传输时手动输入远程服务器密码
    2026-03-03
  • 使用 Docker Compose 构建复杂的多容器 App的方法

    使用 Docker Compose 构建复杂的多容器 App的方法

    Docker Compose 工具相当于 C/C++ 的 make 工具,使用 make 需要 Makefile,所有的编译链接设置都在Makefile 中指定,不需要为了运行程序而每次都在终端手动输入长串的指令,这篇文章主要介绍了使用 Docker Compose 构建复杂的多容器 App,需要的朋友可以参考下
    2022-04-04
  • docker搭建minio集群的实现示例

    docker搭建minio集群的实现示例

    Docker MinIO集群是一种基于Docker的MinIO分布式存储解决方案,本文主要介绍了docker搭建minio集群的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 导出与导入Docker的容器实现示例

    导出与导入Docker的容器实现示例

    本文主要介绍了导出与导入Docker的容器实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • docker构建镜像需使用的命令小结

    docker构建镜像需使用的命令小结

    Docker 构建镜像的命令主要分为两类:Dockerfile 指令与 docker build 命令,这篇文章主要介绍了docker构建镜像需使用的命令,需要的朋友可以参考下
    2007-01-01
  • docker搭建redis三主三从集群的实现步骤

    docker搭建redis三主三从集群的实现步骤

    本文主要介绍了docker搭建redis三主三从集群,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 在Docker中安装Elasticsearch7.6.2的教程

    在Docker中安装Elasticsearch7.6.2的教程

    这篇文章主要介绍了在Docker中安装Elasticsearch7.6.2的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论