Skip to main content

使用docker-compose限制内存和cpu

·76 words·1 min
Docker-Compose
Table of Contents

最近在使用docker的过程中,发现CPU和内存经常占满,导致其它服务都不能正常使用。下面本文就探讨一下如何使用docker-compose限制内存和cpu。本文以docker-compose.yml中version 3.x为例。

内存和CPU限制
#

yml文件添加 service.deploy内容如下:

deploy:
      resources:
         limits:
            cpus: "2.00"
            memory: 5G
         reservations:
            memory: 200M

注意:reservations中不支持cpus,仅支持内存。

以ldap为例:

version: '3.7'
services:
  openldap:
    image: 10.10.239.54/public/openldap:1.3.0
    container_name: openldap
    environment:
      - N9E_NID=22
    ports:
      - "389:389"
      - "636:636"
    deploy:
      resources:
         limits:
            cpus: "2.00"
            memory: 5G
         reservations:
            memory: 200M
    volumes:
      - ./ldap:/var/lib/ldap
      - ./slapd.d:/etc/ldap/slapd.d
    restart: always

启动容器
#

限制指令为deploy.resources.limits这部分,注意节点位置,上面这部分限制的含义是:openldap服务的CPU使用被限制在最多200%的CPU能力,内存使用被限制在最多5GB。同时,这个服务至少需要200MB的内存。

我们启动的时候命令需要发生一些变化,否则不会生效:

#原本的启动命令为
docker-compse up -d
# 需要添加一个参数--compatibility表示以兼容模式来运行
docker-compose --compatibility up -d

这里的关键在于添加–compatibility参数以兼容模式来运行,否则限制不会生效。

验证
#

通过上述方法限制容器CPU和内存后,可以使用命令:docker stats查看容器资源使用情况.

总结
#

  • docker-compose.yml限制内存需要添加deploy.resources.limits节点
  • docker-compose命令启动的时候需要添加–compatibility参数以兼容模式来运行,否则限制不会生效

以上就是Docker Compose中限制容器的CPU和内存使用的全部内容。

Related

优雅的Vim熟练之旅
·890 words·5 mins
Linux Vim
Nessus 工具介绍与使用教程
·146 words·1 min
Linux Boot Nessus Hacker
Rising HBM Demand and Its Ripple Effect on DDR5 Pricing
·317 words·2 mins
HBM DDR5 DRAM AI Hardware Semiconductors