Docker-compose:如何在版本 3 中执行版本 2“mem_limit”?

Joe*_*oeG 3 docker docker-compose

最近,我尝试将版本2 docker-compose yaml文件升级到 version 3。具体来说,我是从 2.1 到 3.4。使用docker-compose版本 1.18.0 和docker版本 18.06.01。

docker-compose由于版本 2 选项的存在,第一次尝试导致中止:mem_limit。阅读这些第 3 版文档,它清楚地指出mem_limit已被删除并查看“升级”以指导使用远离此选项。这些说明告诉您使用deploy带有resources. 对docker-compose.yml文件进行这些更改,系统会正常启动。

不幸的是,我错过了那里的免责声明,它指出deploydocker-compose! 我的问题:有没有办法在使用 Compose 文件参考 3 的docker-compose同时仍然强制执行容器内存限制?

mic*_*sna 7

不,那里没有。

在 2.x 和 3.x 版本之间...删除了几个选项

... mem_limit, memswap_limit: 这些已被部署下的资源键替换。deploy 配置仅在使用 docker stack deploy 时生效,被 docker-compose 忽略。
请参阅撰写:从 2 升级到 3

而且你也不必升级,如果你不使用 swarm,你甚至没有任何升级的理由。

可悲的是,在官方 docker 文档中,有说明

版本 3(最新的和推荐的)

这实际上并不是真的,如果你在没有 swarm 的情况下使用 docker-compose,几乎没有任何理由切换或使用新项目 v3。在官方存储库中,您可以看到这样的评论 [ 2 ][ 3 ]。同样在兼容性矩阵中,您可以看到即使 v3 已经过一段时间,v2 仍然在升级。并且只有 v1 被标记为已弃用。