【问题标题】:Can I use mem_limit in docker-compose? and How?我可以在 docker-compose 中使用 mem_limit 吗?如何?
【发布时间】:2015-05-04 10:38:02
【问题描述】:

docker-compose 支持 mem_limit 吗?如何测试?

我有以下 docker-compose.yml

repository:
  image: myregistry/my_nginx_image
  mem_limit: 60m
  volumes:
    - /etc/localtime:/etc/localtime
  ports:
    - "80:80"

如何证明容器实际上没有超过 60 mb 的 RAM?

我正在使用:

  • 码头工人 1.3.1
  • docker-compose 1.1.0

【问题讨论】:

标签: docker fig


【解决方案1】:

如果你使用 docker compose v3 而不是:

mem_limit: 60m

您需要在deploy 部分指定内存限制:

deploy:
  resources:
    limits:
      memory: 60m

此处描述了此更改:https://docs.docker.com/compose/compose-file/compose-versioning/#version-2x-to-3x

【讨论】:

    【解决方案2】:

    根据documentation,简单

    mem_limit: 1000000000
    

    应该够了。我想,你应该去掉“m”,并使用字节而不是兆字节。

    【讨论】:

    【解决方案3】:

    是的。 docker-compose 支持内存限制,并且可以按照您的示例设置值,用“m”表示兆字节。

    可以使用“docker stats”命令检查运行 Docker 容器的内存限制是多少。

    如果您的容器名称是“repository_1”,则使用以下命令:

    docker stats repository_1
    

    这个结果和这个类似:

    CONTAINER       CPU %    MEM USAGE/LIMIT    MEM %     NET I/O
    repository_1    1.93%    4.609 MiB/60 MiB   7.20%     1.832 KiB/648 B
    

    【讨论】:

    • 我使用的是 Docker 1.5。显然,Docker 1.5 中引入了“docker stats”:blog.docker.com/2015/02/…
    • 如果您在 OSX 上使用 docker 桌面,您还必须进入首选项并将内存限制增加到 2G 以上,否则 docker 中的 mem_limit 将无法使用。
    【解决方案4】:

    您可以在去年写的这篇文章中找到如何配置 docker 以限制资源(CPU 和内存)以及如何测试您的限制:resource-management-in-docker

    【讨论】:

    • 另一种测试内存限制的简单方法是在容器内运行代码,如下所示:soichi.us/archives/11 但要小心交换行为,如我的答案参考所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2021-03-15
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多