0

我试图弄清楚如何使用 https://docs.ansible.com/ansible/latest/docker_container_module.html#docker-container 使用 nvidia-docker https://github.com/NVIDIA/nvidia-docker).

问题

我当前的 Ansible 剧本使用“docker”命令而不是“nvidia-docker”来执行我的容器。

我做了什么

根据一些读数,我尝试添加我的设备,但没有成功

docker_container: name: testgpu image: "{{ image }}" devices: ['/dev/nvidiactl', '/dev/nvidia-uvm', '/dev/nvidia0', '/dev/nvidia-uvm-tools] state: started

注意我尝试了不同的设备语法(内联..),但仍然遇到同样的问题

此命令不会引发任何错误。正如预期的那样,它使用我的图像创建了一个 Docker 容器并尝试启动它。

查看我的容器日志: terminate called after throwing an instance of 'std::runtime_error' what(): No CUDA driver found

这是我在运行时遇到的完全相同的错误, docker run -it <image> 而不是 nvidia-docker run -it <image>

在将 docker_container 与 Ansible 一起使用时如何覆盖 docker 命令的任何想法?

我可以确认我的 CUDA 驱动程序已安装,并且所有路径 /dev/nvidia* 都是有效的。

谢谢

4

1 回答 1

1

docker_container模块不使用docker可执行文件,它通过 docker-py Python 库使用 Docker 守护程序 API。

查看nvidia-docker包装脚本,它设置--runtime=nvidia-e NVIDIA_VISIBLE_DEVICES.

要设置NVIDIA_VISIBLE_DEVICES,您可以env使用docker_container.

但是我看不到从当前的 Ansible 2.4开始runtime通过模块进行设置的方法。 您可以尝试通过在配置文件中进行设置来克服这个问题,因此 Docker 守护程序将默认使用运行时。docker_container
"default-runtime": "nvidia"daemon.jsonnvidia

于 2018-01-09T07:28:55.317 回答