RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx
我使用的是windows 10 WSL2 + docker desktop,运行的是
docker run -it --rm --name comfyui-cn --gpus 0 -p 8188:8188 -v storage:/root -e CLI_ARGS="" yanwk/comfyui-boot:cu124-cn /bin/bash /runner-scripts/minimal-start.sh
运行之前,在windows 下已经安装了Nvidia的最新驱动12.8,并且在WSL2虚拟机(ubuntu)下安装了Nvidia toolkit。
现在报错说找不到NIVDIA GPU, 这个是要在WSL2虚拟机下再安装一次显卡驱动吗?
下面是我的WSL2虚拟机下nvidia 信息
root@SZEFAMILY:/mnt/d/yanwk-comfyui-boot# nvidia-smi
Sun Feb 23 20:46:40 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.16 Driver Version: 572.16 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 2080 Ti On | 00000000:01:00.0 Off | N/A |
| 28% 36C P8 13W / 250W | 204MiB / 22528MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 26 G /Xwayland N/A |
| 0 N/A N/A 35 G /Xwayland N/A |
+-----------------------------------------------------------------------------------------+
root@SZEFAMILY:/mnt/d/yanwk-comfyui-boot#
这是不是代表着我已经安装好了驱动?那为啥docker还是报这个错误呢
先说解决思路:
- 更新 / 重装 / 卸载后安装旧版本 Docker Desktop(最简单,尽量先用这方法)
- 改用 Podman Desktop(要踩坑,熟悉后就比较舒坦了)
- 直接在 Ubuntu 内安装运行 ComfyUI (要踩更多坑,踩完也熟悉 PyTorch 项目的安装运行了)
再来解释一下:
运行之前,在windows 下已经安装了Nvidia的最新驱动12.8,并且在WSL2虚拟机(ubuntu)下安装了Nvidia toolkit。 现在报错说找不到NIVDIA GPU, 这个是要在WSL2虚拟机下再安装一次显卡驱动吗?
这是不是代表着我已经安装好了驱动?那为啥docker还是报这个错误呢
你可能也体会到了,WSL2 下每个发行版是一个“轻量级虚拟机”,它们都使用微软提供的内核,但是安装的组件互相独立。 你在 Ubuntu 环境下安装配置好了 NVIDIA 工具等,但这和 Docker Desktop 使用的环境无关,后者是由它自己配置的。
简单来说,你要能在容器内运行 nvidia-smi 才行,比如:
docker run -it --rm --gpus 0 yanwk/comfyui-boot:cu124-cn 'nvidia-smi'
Docker Desktop 容器访问 GPU 的原理是:
- 将 Windows 下的 GPU 驱动映射到 WSL2 虚拟机内
- 这部分工作由 WSL2 自动完成,你在 Ubuntu 下可以访问 GPU 说明该部分工作正常
- 虚拟机内配置 NVIDIA Container Toolkit,将 GPU 映射为容器资源
- 这部分工作由 Docker Desktop 自动完成,你运行容器报
Found no NVIDIA driver on your system说明该部分工作不正常
之前我也遇到过 Docker Desktop 更新后不能访问 GPU 的问题,通过卸载后安装旧版解决(卸载也是为了删除虚拟机的虚拟磁盘,不然可能遗留 bug)。 手动处理 Docker Desktop 虚拟机环境也是可以的,但相对复杂一点,有那功夫 Podman Desktop 都配置好了。
如果重装 Docker Desktop 不能解决……
如何配置 Podman Desktop:
- 安装 Podman Desktop,安装程序选
podman-desktop-1.16.2-setup-x64.exe。 - 默认选项安装即可,kubectl 可省略。
- 第一次启动会询问创建 Podman Machine(用于运行容器的虚拟机),使用默认配置创建即可(默认开启 root 权限)。
- 接下来在虚拟机中安装 NVIDIA Container Toolkit。用 PowerShell 或 CMD 运行
podman machine ssh - ssh 进虚拟机后,运行:
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
tee /etc/yum.repos.d/nvidia-container-toolkit.repo && \
yum install -y nvidia-container-toolkit && \
nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml && \
nvidia-ctk cdi list
运行完毕会列出容器可用的 GPU 资源( 参考文档 )。
如果你访问不了 github.io:
可以配置代理(在 Podman Desktop - Settings - Proxy 里),或者运行:
cat <<EOF > /etc/yum.repos.d/nvidia-container-toolkit.repo
[nvidia-container-toolkit]
name=nvidia-container-toolkit
baseurl=https://gh-proxy.com/https://nvidia.github.io/libnvidia-container/stable/rpm/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://gh-proxy.com/https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
[nvidia-container-toolkit-experimental]
name=nvidia-container-toolkit-experimental
baseurl=https://gh-proxy.com/https://nvidia.github.io/libnvidia-container/experimental/rpm/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=0
gpgkey=https://gh-proxy.com/https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
yum install -y nvidia-container-toolkit && \
nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml && \
nvidia-ctk cdi list
运行容器:
参照 cu124-cn 文档的 podman 运行命令启动容器即可,与 docker 大同小异。
额外:
你不需要在 Windows 下安装 CUDA Toolkit,这个是为 Windows 下程序提供 nvcc 编译器等,与 WSL2 无关。
For anyone still facing this issue. Add this environment variable: NVIDIA_VISIBLE_DEVICES: all