使用docker-compose中的nvidia-docker

时间:2017-04-12 11:37:37

标签: docker docker-compose nvidia-docker

我想用docker-compose运行2个泊坞窗图像。

一个图像应该与nvidia-docker一起运行,另一个图像应该与docker一起运行。

我看过这篇文章use nvidia-docker-compose launch a container, but exited soon 但这对我不起作用(甚至不只运行一张图像)......

任何想法都会很棒。

2 个答案:

答案 0 :(得分:7)

更新:请先检查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生成一个特定的docker文件。

你也可以手工制作这个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码头工人合作。

答案 1 :(得分:0)

除了已接受的答案外,这是我的方法,更短一些。 由于所需的fireEvent(我不能使用2.3-见this),因此我需要使用旧版本的docker-compose(runtime: nvidia)。设置version: 3将使所有GPU可见。

NVIDIA_VISIBLE_DEVICES=all

我的示例可用here

在Debian 10上的NVIDIA Docker 2.5.0,Docker CE 19.03.13和NVIDIA-SMI 418.152.00和CUDA 10.1上进行了测试。