使用来自 docker-compose 的 nvidia-docker
use nvidia-docker from docker-compose
我想 运行 2 docker 张图像 docker-compose。
一个图像应该 运行 与 nvidia-docker 而另一个与 docker.
我看过这个postuse nvidia-docker-compose launch a container, but exited soon
但这对我不起作用(甚至 运行 只有一张图片)...
任何想法都会很棒。
更新:请先检查 nvidia-docker 2 及其对 docker-compose 的支持
https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#do-you-support-docker-compose
(我首先建议添加 nvidia-docker 标签)。
如果您查看 nvidia-docker-compose 代码 here,它只会在查询localhost:3476.
上的 nvidia 配置
你也可以手工制作这个 docker-compose 文件,因为它们非常简单,按照这个例子,用你的 nvidia 驱动程序版本替换 375.66 并放入尽可能多的 /dev/nvidia[ n] 行,因为你有图形卡(没有尝试将服务放在单独的 GPU 上,但去吧!):
services:
exampleservice0:
devices:
- /dev/nvidia0
- /dev/nvidia1
- /dev/nvidiactl
- /dev/nvidia-uvm
- /dev/nvidia-uvm-tools
environment:
- EXAMPLE_ENV_VARIABLE=example
image: company/image
volumes:
- ./disk:/disk
- nvidia_driver_375.66:/usr/local/nvidia:ro
version: '2'
volumes:
media: null
nvidia_driver_375.66:
external: true
然后 运行 这个手工制作的 docker-compose 文件使用经典的 docker-compose 命令。
也许您可以通过跳过其他服务中的 nvidia 特定内容来与非 nvidia docker 组合。
除了已接受的答案之外,这是我的方法,更短一些。
我需要使用旧版本的 docker-compose (2.3
),因为需要 runtime: nvidia
(不一定适用于 version: 3
- 请参阅 )。设置 NVIDIA_VISIBLE_DEVICES=all
将使所有 GPU 可见。
version: '2.3'
services:
your-service-name:
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
# ...your stuff
我的例子可用here。
在 NVIDIA Docker 2.5.0、Docker CE 19.03.13 和 NVIDIA-SMI 418.152.00 以及 Debian 10 上的 CUDA 10.1 上测试。
我想 运行 2 docker 张图像 docker-compose。
一个图像应该 运行 与 nvidia-docker 而另一个与 docker.
我看过这个postuse nvidia-docker-compose launch a container, but exited soon 但这对我不起作用(甚至 运行 只有一张图片)...
任何想法都会很棒。
更新:请先检查 nvidia-docker 2 及其对 docker-compose 的支持 https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#do-you-support-docker-compose
(我首先建议添加 nvidia-docker 标签)。
如果您查看 nvidia-docker-compose 代码 here,它只会在查询localhost:3476.
上的 nvidia 配置你也可以手工制作这个 docker-compose 文件,因为它们非常简单,按照这个例子,用你的 nvidia 驱动程序版本替换 375.66 并放入尽可能多的 /dev/nvidia[ n] 行,因为你有图形卡(没有尝试将服务放在单独的 GPU 上,但去吧!):
services:
exampleservice0:
devices:
- /dev/nvidia0
- /dev/nvidia1
- /dev/nvidiactl
- /dev/nvidia-uvm
- /dev/nvidia-uvm-tools
environment:
- EXAMPLE_ENV_VARIABLE=example
image: company/image
volumes:
- ./disk:/disk
- nvidia_driver_375.66:/usr/local/nvidia:ro
version: '2'
volumes:
media: null
nvidia_driver_375.66:
external: true
然后 运行 这个手工制作的 docker-compose 文件使用经典的 docker-compose 命令。
也许您可以通过跳过其他服务中的 nvidia 特定内容来与非 nvidia docker 组合。
除了已接受的答案之外,这是我的方法,更短一些。
我需要使用旧版本的 docker-compose (2.3
),因为需要 runtime: nvidia
(不一定适用于 version: 3
- 请参阅 NVIDIA_VISIBLE_DEVICES=all
将使所有 GPU 可见。
version: '2.3'
services:
your-service-name:
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
# ...your stuff
我的例子可用here。
在 NVIDIA Docker 2.5.0、Docker CE 19.03.13 和 NVIDIA-SMI 418.152.00 以及 Debian 10 上的 CUDA 10.1 上测试。