Windows系统WSL2 的ubuntu子系统安装 docker、nvidia-docker调用GPU

本文详细介绍了如何在Windows 10/11上安装和配置WSL2,包括升级Windows版本、安装预览版NVIDIA驱动,以及设置默认为WSL2。接着,它指导用户安装Docker,并解决可能出现的NVIDIA-docker报错问题,通过降级部分包来确保GPU支持。最后,文章提供了验证GPU可用性的步骤和一些WSL操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装wsl2

先决条件

Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11

通过按 Windows 徽标键 + R ---输入winver,单击确定,检查你的 Windows 版本

如果内部版本低于要求请升级。登录你的windows账户并升级windows至预览版本,(过程可能需要1-2个小时)

升级完成后,验证内部版本是否低于19041 如果还低说明选错了升级渠道,一定要选择Dev 渠道,最新渠道,获取最新的版本

安装预览版nvdia驱动

GPU in Windows Subsystem for Linux (WSL) | NVIDIA Developer

需要登录nvidia账号才能下载,登录账号后下载适合自己的nvidia版本

启用windows子系统功能

安装WSL2

1.管理员身份PowerShell

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启电脑

2.管理员PowerShell 将WSL2设置为默认版本

wsl --set-default-version 2

提示"WSL 2 需要更新其内核组件”。下载并安装 WSL2 Llinx内核

3. 随后进入微软商店下载并安装对应的ubuntu版本即可。或者前往在此选择具体Linux版本

两种方式登录wsl2

 如果系统无法进入并报错,需要下载并安装 WSL2 Llinx内核

确保WSL2的linux内核为4.19.121+

uname -a

验证 wsl2

↓↓↓↓↓↓↓↓↓↓  Windows 管理员PowerShell

wsl --list --verbose

只要这个版本是2说明wsl2安装成功。(只有2才可以调用GPU)

安装docker

下面代码一行一行执行

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装nvidia-docker

直接使用nvdia-docker,当前系统是不需要安装cuda的

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2

重启docker

sudo service docker stop
sudo service docker start

验证nvidia-docekr 是否可以调用GPU

创建一个tensorflow容器

sudo docker run --runtime=nvidia  --rm -it --name tensorflow-1.14.0 tensorflow/tensorflow:1.14.0-gpu-py3

如果报错,是因为现最新版的 nvidia-docker有BUG (2022-2-10再次测试这个bug已经好了)

docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: Running hook #1:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: driver error: failed to process request: unknown.

对部分包进行降级

sudo apt-get install nvidia-docker2:amd64=2.5.0-1 \
           libnvidia-container-tools:amd64=1.3.3-1 \
           nvidia-container-runtime:amd64=3.4.2-1 \
           libnvidia-container1:amd64=1.3.3-1 \
           nvidia-container-toolkit:amd64=1.4.2-1

再次运行容器

sudo docker run --runtime=nvidia  --rm -it --name tensorflow-1.14.0 tensorflow/tensorflow:1.14.0-gpu-py3

测试GPU是否可用

python
import tensorflow as tf
print(tf.test.is_gpu_available())

windows wsl 操作技巧、命令

windows wsl 操作技巧、命令_SUNbrightness的博客-优快云博客_wsl技巧

参考链接

安装 WSL | Microsoft Docs

CUDA on WSL :: CUDA Toolkit Documentation

nvidia-docker 2.6.0-1 - not working on Ubuntu WSL2 · Issue #1496 · NVIDIA/nvidia-docker · GitHub

Install Docker Engine on Ubuntu | Docker Documentation

<think>好的,我现在需要解决用户的问题:在WSL2Ubuntu中使用RAGflow时遇到无法选择NVIDIA驱动程序的问题,错误信息是“Error response from daemon: could not select device driver nvidia with capabilities: gpu”。我得仔细分析可能的原因,并给出解决方案。 首先,用户的环境是WSL2Ubuntu,运行RAGflow时出现这个错误。通常,这类问题与Docker无法识别NVIDIA GPU有关。我记得在WSL2中使用NVIDIA GPU需要几个步骤:安装正确的驱动、配置DockerNVIDIA容器工具包等。 首先,用户需要确认Windows主机上已经安装了适用于WSLNVIDIA驱动程序。这个驱动不是常规的GeForce驱动,而是专门为WSL2设计的。用户应该检查NVIDIA官网,下载并安装最新的WSL2驱动,版本应该在470以上。如果驱动没装或者版本过旧,Docker就无法调用GPU。 接下来,在WSL2Ubuntu内部,可能需要安装nvidia-container-toolkit。这个工具包让Docker容器能够访问宿主机的GPU。用户需要添加NVIDIA的仓库,更新源,然后安装这个工具包。安装完成后,重启Docker服务,确保配置生效。 然后,检查Docker的配置是否正确。用户需要确认/etc/docker/daemon.json文件中是否包含NVIDIA的运行时配置。如果没有,需要手动添加,并重启Docker服务。这一步很重要,否则Docker不知道如何使用NVIDIA驱动。 用户可能还需要安装CUDA工具包,虽然RAGflow可能不需要直接使用CUDA,但某些依赖库可能需要。安装CUDA Toolkit可以确保系统有必要的库文件,建议安装与驱动兼容的版本。 验证环节也很重要。运行nvidia-smi命令查看GPU是否被识别。如果这里报错,说明驱动有问题。再运行docker run --gpus all nvidia/cuda:11.0-base nvidia-smi,如果容器内能显示GPU信息,说明Docker配置正确。否则,需要回头检查之前的步骤。 另外,用户可能使用的是旧版Docker,需要升级到至少19.03版本,因为GPU支持是从这个版本开始的。同时,确保WSL2Ubuntu内核是最新的,可以通过Windows Update来升级。 如果所有步骤都正确,但问题依旧,可能需要检查用户是否在Windows功能中启用了“虚拟机平台”和“Windows Subsystem for Linux”,并确保BIOS中虚拟化支持已开启。此外,某些安全软件可能会干扰,可以尝试暂时禁用。 最后,如果问题依然存在,查看详细的日志可能会有帮助。用户可以用docker run --gpus all --rm nvidia/cuda:11.0-base nvidia-smi来获取更多错误信息,或者在Docker日志中寻找线索。 总结一下,可能的解决步骤是:安装正确的驱动,安装nvidia-container-toolkit,配置Docker安装CUDA,验证各步骤,处理环境依赖。需要按顺序检查每个环节,确保每一步都正确配置。</think>在WSL2 Ubuntu中解决RAGflow无法调用NVIDIA GPU的问题,需按以下步骤排查: ### 1. 验证基础环境配置 - **确认Windows端驱动安装** 在Windows 11中安装专为WSL设计的[NVIDIA显卡驱动](https://www.nvidia.com/Download/index.aspx)(版本≥470.14),安装完成后在PowerShell执行: ```powershell nvidia-smi ``` 若显示GPU信息则基础驱动正常[^1] - **更新WSL内核** 在PowerShell中执行: ```powershell wsl --update ``` 确保使用最新WSL2内核(版本≥5.10.60.1) ### 2. Linux子系统配置 - **安装nvidia-container-toolkit** 在Ubuntu子系统中依次执行: ```bash distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - 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-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker ``` - **验证Docker GPU支持** 执行测试命令: ```bash docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi ``` 正常应输出与宿主机相同的GPU信息[^2] ### 3. RAGflow特定配置 - **修改docker-compose.yaml** 在RAGflow的容器定义中添加GPU声明: ```yaml services: ragflow: devices: - "/dev/nvidia0:/dev/nvidia0" environment: - NVIDIA_VISIBLE_DEVICES=all deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] ``` - **重建容器** 执行清理并重建容器: ```bash docker-compose down -v docker system prune -a docker-compose up --build ``` ### 4. 进阶问题排查 若仍报错,尝试: ```bash journalctl -u docker.service --since "10 minutes ago" | grep -i nvidia ``` 检查是否有以下典型错误: - `Failed to initialize NVML: Driver/library version mismatch` → 需重启Windows主机 - `no such device` → 在WSL内执行: ```bash ls -l /dev/nvidia* ``` 若无设备节点,需在Windows注册表添加: ``` [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvlddmkm] "EnableMsHybrid"=dword:00000002 ```
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SUNbrightness

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

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

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

打赏作者

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

抵扣说明:

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

余额充值