如何指定要在 docker-compose 版本 3 中使用的容器运行时?

Ash*_*orf 5 docker-compose nvidia-docker

我正在开发一个需要 nvidia 运行时的容器。我可以在 v2.3 docker-compose 文件中指定此运行时,如下所示:

version: "2.3"
services:
  my-service:
    image: "my-image"
    runtime: "nvidia"
    ...
Run Code Online (Sandbox Code Playgroud)

跑步docker-compose up my-service效果很好。我得到了 nvidia 运行时,一切正常。

我只是通过将“2.3”更改为“3”来尝试此操作,并且在执行此操作时出现以下错误docker-compose up my-service

ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.my-service: 'runtime'
Run Code Online (Sandbox Code Playgroud)

如果我取出runtime: "nvidia"线路,就不会出现问题——当然,它没有使用 nvidia,而且我需要访问主机上的 GPU 以获得我想要的性能。

runtime在 docker-compose v3 中是否有等价物?如果没有,为什么这个选项被删除了?提前致谢。:)

小智 3

我意识到这个问题相当老了,但我昨天遇到了它。

TL;DR: 将 docker-compose 升级到 1.27.0+

细节

runtime关于在专用 Docker bug 线程中删除关键字进行了相当多的讨论: https://github.com/docker/compose/issues/6691

最后,在 1.27.0 中,Docker 决定允许它回来。所以你只需要拥有正确版本的 docker-compose 即可。

我推荐 pip 安装路径,因为它们的版本更新(Debian buster 中当前的 docker-compose 版本是 1.21)。似乎还有其他充分的理由这样做,请参阅此处