unbuntu下的tensorflow docker转移到REHL7.X下遇到的问题总结

34 篇文章 4 订阅
18 篇文章 0 订阅
红帽系统中运行docker run遇到的nvidia-docker-plugin相关的错误:
在ubuntu x86_64下做好的docker镜像,使用docker save保存为tar文件,复制文件到另一台红帽REHL7.X x86_64设备上,运行docker run遇到以下错误:
nvidia-docker-plugin | 2018/01/12 00:56:15 Received create request for volume 'nvidia_driver_367.48'
nvidia-docker-plugin | 2018/01/12 00:56:15 Error: link /usr/bin/nvidia-cuda-mps-control /var/lib/nvidia-docker/volumes/nvidia_driver/367.48/bin/nvidia-cuda-mps-control: invalid cross-device link
docker: Error response from daemon: create nvidia_driver_367.48: VolumeDriver.Create: internal error, check logs for details.
See 'docker run --help'.

这个过程好像是nvidia-docker-plugin在/var/lib/nvidia-docker/volumes/nvidia_driver/367.48/目录下创建指向/usr/bin/nvidia-cuda-mps-control的"硬链接"。而跨文件系统是不可以创建硬链接的,REHL这台设备可能和ubuntu下的环境不太一样。

解决办法如下:
从我的ubuntu的设备上把/var/lib/nvidia-docker/volumes/nvidia_driver/367.48/目录复制到REHL系统中,重新docker run,一切OK了。如果相关路径的上层目录不存在,先创建完整的目录mkdir -p /var/lib/nvidia-docker/volumes/nvidia_driver/367.48/

题外话:上述方法是尝试过的最终方法,中间尝试过使用为 nvidia-cuda-mps-control创建软连接。虽然可以启动docker run,也可以进入到docker中,但是在docker中import tensorflow时发现找不到libcuda.so.1。错误如下:
ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
之前测试过的镜像,开始怀疑是docker镜像损坏了,但是经过比对docker镜像没有问题,但是在docker中确实找不到这个库。我的镜像在之前开发的ubuntu上是好的,在ubuntu下运行的容器中可以看到/usr/local/nvidia/lib64/目录下看到libcuda.so.1,在REHL中运行的容器看不到这个目录,一度怀疑人生了。后来发现docker容器中/usr/local/nvidia/的目录就是host系统中的/var/lib/nvidia-docker/volumes/nvidia_driver/367.48/目录。所以要把缺少的整个目录拷贝过来。

注意:不同的nvidia驱动版本对应不同的目录,注意修改 367.48
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值