如何限制docker-compose中的内存使用率?

时间:2019-05-31 17:57:15

标签: docker docker-compose dockerfile

这是我的docker-compose.yaml文件的一部分

version: '3.4'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: /app
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 23M

启动docker-compose up -d

当我做docker stats时,它说限制仍然是1.9GiB。我在做什么错了?

CONTAINER ID      NAME     CPU %     MEM USAGE / LIMIT     MEM %
13b6588evc1e      app_1    1.86%     20.45MiB / 1.952GiB   1.02%

3 个答案:

答案 0 :(得分:0)

deploy键仅适用于群体模式以及docker-compose文件版本3及更高版本。

在您的情况下,请使用docker-compose文件版本2并定义资源限制:

version: "2.2"

services:
  app:
    image: foo
    cpus: "0.5"
    mem_limit: 23m

请参阅官方文档here

答案 1 :(得分:0)

您是否以群体模式运行docker-compose?如果不建议运行2.x版本的撰写文件格式。

3.X要求docker-compose必须以swarm模式运行,以使新的一组资源指令生效。

2.X中的替代方案是cpu_shares,cpu_quota,cpuset,mem_limit,memswap_limit,mem_swappiness

答案 2 :(得分:0)

如果您不打算使用docker swarm堆栈部署,请始终坚持使用您所操作的docker引擎版本支持的最新2.x版本。 Docker 17.12和更高版本支持撰写文件版本2.4。 Docker-Compose具有cli提供的所有功能,而swarm仍然缺少其中一些功能:请参阅https://github.com/moby/moby/issues/25303

如果使用docker-compose,则3.x文件中所有与群相关的元素都将被忽略,除了机密(还是配置?!)。如果您开始混合仅3.x元素和仅2.x元素,则配置将无效。