我正试图弄清楚如何使用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 *都有效。
谢谢
答案 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
运行时。