【问题标题】:How to limit memory usage in docker-compose?如何限制 docker-compose 中的内存使用?
【发布时间】:2019-05-31 17:57:15
【问题描述】:

这是我的 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%

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

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

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

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

    见官方文档here

    【讨论】:

      【解决方案2】:

      您是否在 swarm 模式下运行 docker-compose ?如果不建议运行 2.x 版本的 compose 文件格式。

      3.X 要求 docker-compose 在 swarm 模式下运行,以使新的资源指令集生效。

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

      【讨论】:

      • 您可以通过提供具体示例(首选)和/或添加相关材料的链接来改进您的答案。谢谢!
      【解决方案3】:

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

      如果你使用 docker-compose,3.x 文件中所有与 swarm 相关的元素都将被忽略,除了秘密(或者它是配置?!)。如果您开始将 3.x 元素与 2.x 元素混合,您的配置将失效。

      【讨论】:

      • 太糟糕了,我不能在 2.x 版本中使用机密。
      猜你喜欢
      • 1970-01-01
      • 2022-11-16
      • 2017-07-09
      • 2023-02-12
      • 2020-12-28
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多