微技术

关注技术领域,分享资讯和经验。

docker-compose限制CPU和内存

最近在使用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和内存使用的全部内容。