WSL2 + docker + cuda 报错nvidia-container-cli: mount error: file creation failed:libnvidia-ml.so.1: fi

在使用WSL2和Ubuntu22.04,显卡驱动528.89及CUDA11.7的环境中,通过Docker运行容器并尝试使用--gpusall时遇到错误。问题源于libnvidia-ml.so.1、libcuda.so.1等文件的存在。解决方案是删除这些文件,创建新镜像,然后成功利用新镜像启动带有GPU支持的容器。

环境

  • WSL2 + Ubuntu 22.04
  • 显卡驱动: 528.89
  • CUDA: 11.7

问题

在创建docker时使用--gpus all会报错:

docker run --gpus all -it -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw celinachild/orbslam2 /bin/bash
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overlay2/b92e32945b90e830d9786a89fa0c138933ab7657c8a459bafe551fb944836b65/merged/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1: file exists: unknown.
ERRO[0000] error waiting for container: context canceled

解决

参考 issue1551

解决方式是

  1. 先不使用gpu创建容器
  2. 删除相关文件(注意根据报错删除文件,不要删多)
rm -rf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so.1
  1. 创建不包含这些文件的新的镜像
  2. 使用新的镜像创建容器

实现如下:

╭─changym at LAPTOP-CHANGYM in ~ (base
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值