使用nvidia-docker而不是使用Ansible的docker

时间:2018-01-09 01:57:02

标签: docker ansible nvidia nvidia-docker

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

问题

我当前的Ansible playbook使用“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>

在使用带有Ansible的docker_container时如何覆盖docker命令的任何想法?

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

谢谢

1 个答案:

答案 0 :(得分:1)

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

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

要设置NVIDIA_VISIBLE_DEVICES,您可以使用env的{​​{1}}参数。

但我认为目前的Ansible 2.4没有办法通过docker_container模块设置runtime
您可以尝试通过在docker_container配置文件中设置"default-runtime": "nvidia"来解决此问题,因此默认情况下Docker守护程序将使用daemon.json运行时。