WSL2环境下Windows Docker无法识别CUDA问题求解
问题修复方案
首先明确前提:你当前WSL2内nvidia-smi能正常输出,说明Windows主机端NVIDIA驱动、WSL2的GPU适配都正常,报错原因是Docker没有配置NVIDIA容器运行时,无法将GPU设备映射到容器内。
前置注意
不要在WSL2的Ubuntu环境中手动安装Linux原生NVIDIA驱动,WSL2会直接复用Windows主机的驱动,额外安装Linux驱动会导致冲突,破坏现有GPU适配能力。
操作步骤
- 第一步:添加NVIDIA容器运行时的软件源
执行以下命令导入密钥、添加源并更新软件列表:curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update - 第二步:安装nvidia-docker2适配组件
执行安装命令:
安装完成后重启Docker服务生效:sudo apt install -y nvidia-docker2sudo service docker restart - 第三步:验证配置有效性
运行官方测试容器验证GPU映射是否正常:
如果命令正常输出GPU信息,说明配置已经修复。docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi - 第四步:原有业务容器启动调整
后续启动业务镜像时,必须在docker run命令中添加--gpus all参数,才能将GPU设备映射到容器内。
如果需要默认所有容器都自动挂载GPU,可以修改Docker配置文件/etc/docker/daemon.json,添加以下内容:
修改完成后重启Docker服务即可生效。{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } }
内容的提问来源于stack exchange,提问作者Talha Anwar
相关产品推荐
相关产品推荐

