使用nvidia-docker 或 docker --runtime=nvidia 报错: docker: Error response from daemon: OCI runtime create failed...


平台说明:Ubuntu16.04 + cuda9.0+cudnn7 + docker19.03.1
在使用docker 搭建cuda环境时:

#使用nvidia-docker
nvidia-docker run --rm nvidia/cuda nvidia-smi
#或者使用 docker --runtime=nvidia xx
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

报错:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “process_linux.go:430: container init caused “process_linux.go:413: running prestart hook 1 caused \“error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility –require=cuda>=10.1 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411 --pid=25969 /var/lib/docker/overlay2/9481fbe92323959e30c79c7e96ceaf310711fc445ea88cf44c26f2e52d9f642/merged]\\nnvidia-container-cli: requirement error: unsatisfied condition: brand = tesla\\n\”””: unknown.

在github上有人遇到类似的问题nvidia-docker#1012#685:
运行报错里说:…–require=cuda>=10.1 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411…
这个应该是我主机的cuda版本和镜像里的cuda版本没有对应,docker里使用cuda的版本应该需要与主机的对应或者满足一定要求,而nvidia-docker run --rm nvidia/cuda nvidia-smidocker run --runtime=nvidia --rm nvidia/cuda nvidia-smi 获取的都是最新版本的 nvidia/cuda ,而我主机上是 cuda:9.0+cudnn7,达不到要求,所以有两个办法:一是按照报错的要求安装cuda>=10.1的版本和对应驱动,二是选择对应版本的镜像,由于我不想更改主机的cuda,所以我选择第二种方式。
拉取对应我主机对应cuda版本的镜像:

#使用nvidia-docker
nvidia-docker run --rm nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 nvidia-smi
#或者使用 docker --runtime=nvidia xx
docker run --runtime=nvidia --rm nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 nvidia-smi

然后就不报错了,输出NVIDIA-SMI信息。

注意:此方法仅仅针对报错里有:…–require=cuda>=10.1 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411…, 不过可以作为docker使用cuda出错的一个参考切入点:docker的cuda要与你的host的cuda版本对应。一开始时我各种找哪里出问题,一直以为是nvidia-docker2安装有问题,有旧版本nvidia-docker或者依赖不对,弄了好多天,直到看到这两个issue才想到可能是版本问题,才解决了这个问题。

参考:
https://blog.csdn.net/qq_37674858/article/details/88552449
nvidia-docker issues #1012#685
注意驱动版本要对应:https://blog.csdn.net/renhanchi/article/details/75808029

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐