限制docker-compose v3中的资源

pro*_*eus 20 docker-compose

docker-compose.yml文件的第3版不再支持mem_limit.文档告诉我应该使用deploy.resources密钥,但这个部分只对swarm或docker堆栈有效.

cpu_shares,cpu_quota,cpuset,mem_limit,memswap_limit:这些已被deploy下的资源键所取代.请注意,部署配置仅在使用docker stack deploy时生效,并被docker-compose忽略.

...... 正如文档中所写的那样.

如何使用docker-compose和yml文件的v3格式设置内存/ CPU限制?

and*_*tti 11

我想知道同样的事情并发现了这个:https: //github.com/docker/compose/issues/4513

所以简而言之,这是不可能的,你必须使用docker-compose格式的2.1版来指定不被忽略的限制. docker-compose up


小智 9

您可以尝试docker-compose --compatibility up将 v3 文件转换为 v2 等效文件的 CLI 标志,并在可能的情况下翻译部署选项。

  • 根据 [docker-compose 贡献者](https://github.com/docker/compose/issues/4513#issuecomment-368167466) 的说法,如果您不使用 Swarm,建议使用 v2.x 架构而不是 v3。 (2认同)

小智 6

我前段时间也在搜索这个问题。我在这里找到了答案。起初,我尝试在不使用 docker stack 的情况下实现此功能,但没有成功。

这是您用来限制容器的 CPU/内存消耗的代码片段。其他属性可以搜索docker的文档。

 deploy:
  replicas: 5
  resources:
    limits: 
      cpus: "0.1"
      memory: 50M
Run Code Online (Sandbox Code Playgroud)

除非您将应用程序部署为堆栈,否则 Compose 文件无法识别部署属性。