win10 WSL2 Docker 与 Linux Docker

项目场景:

项目场景:用win10 wsl2 docker开发使用GPU(tensorflow、onnx、TensorRT)的镜像,然后部署到Linux生产环境进行使用,发现不识别cuda驱动。


问题描述

在Linux上运行wsl2 save 后的镜像。

docker run -it --gpus all tensorrt:21.06-py3

出现错误:

ERROR: No supported GPU(s) detected to run this container

输入nvidia-smi

NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system.
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

输入nvcc -V则正常显示。


原因分析:

由于生产环境不方便截图,因此没有配图。

原因:NVIDIA驱动不匹配

Linux运行没有使用WSL2开发过镜像,会发现一切正常,如果在WSL2上通过--gpus all运行过就无法识别NVIDIA驱动了。

如原镜像名为tensorrt:21.06-py3。

在WSL运行此镜像:

docker run -it --gpus all tensorrt:21.06-py3

无论是nvidia-smi还是nvcc -V都是正常的。

在Linux直接运行此镜像:

docker run -it --gpus all tensorrt:21.06-py3

无论是nvidia-smi还是nvcc -V也都是正常的。

从WSL导出此镜像为tensorrt:21.06-py3-wls2,将它导入到Linux Docker会出现一开始的问题。
Linxu Docker 在两个镜像根目录中输入:

find -name linnvidia-ml*

会发现tensorrt:21.06-py3-wls2比tensorrt:21.06-py3多了两个路径中带有wsl的文件,应该是由于在WSL2中使用的驱动为CUDA For WSL不是单纯的CUDA驱动。删除了这两个也没有正常识别NVIDIA驱动。


解决方案:

需要将使用GPU的镜像从WSL2 Docker迁移到 Linux Docker时,目前的解决方案是在win10上运行镜像不能添加--gpus all配置参数,即不使用GPU;由于对于驱动软连接不是很熟悉,其余的解决方法还没有发现。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘丶小歪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值