最近天天想跑一下github上的热门repo,实验室的电脑太少了导致不得不充分利用一下工位上的windwos电脑,把windows部署docker并跑wsl2调GPU的过程总结一下~

安装前提

  • 需要win10 22H2或win11 pro以上的版本
  • 需要将nvidia更新为最新的驱动

安装docker desktop

  1. Docker下载地址:docker官网下载地址
    在这里插入图片描述

  2. 启用hyper-v:微软教程官网
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  3. Shift + Ctrl + ESC 启动任务管理器,查看性能-虚拟化是否启用。
    在这里插入图片描述

  4. 安装docker
    image-20240528162625523

    如果需要配置docker镜像加速,推荐阿里云:容器镜像服务 (aliyun.com)

安装wsl2

执行以下命令, 将wsl升级为wsl2:

1
2
wsl --update
wsl --set-default-version 2

执行以下命令确认版本均为2:

1
wsl -l -v 

image-20240528172427389

安装linux子系统

  1. 打开微软商店。搜索【Ubuntu】或【linux】都可以,安装tls长期支持版即可。
    image-20240528172610644
  2. 打开子系统并进行配置
    在这里插入图片描述
  3. 设置默认使用root登录
    管理员权限打开【powershell】
    运行:ubuntu2004.exe config --default-user root
    在这里插入图片描述
    然后再打开的时候就可以看到默认登录用户为【root】。
    在这里插入图片描述
  4. 将Ubuntu2004设置为默认wsl,执行wslconfig /setdefault Ubuntu-20.04
    image-20240528203453444
  5. docker配置ubuntu20.04 LTS
    在这里插入图片描述
    在这里插入图片描述

配置ssh链接

因为有局域网访问的需求,故需要配置远程ssh链接。

  1. 打开powershell,执行代码,其中172.27.155.153是wsl的dockerIP

    1
    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.27.155.153 connectport=22

    listenport不要设为22,否则会有bug

  2. 查看windows宿主机端口转发情况:

    1
    netsh interface portproxy show all

    image-20240529193206740

  3. 当然,如果配置错的话可以删除:

    1
    netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=2222

GPU的使用

  1. 请确保打开开发人员模式

    image-20240529091738047

  2. windows更新到最新版本,并开启可选更新
    image-20240529091903162
    image-20240529091937321

  3. 显卡驱动下载
    首先需要安装显卡驱动,NVIDIA官网下载地址
    找到自己的显卡型号下载安装即可。
    image-20240528174134569

  4. CUDA For WSL
    驱动下载:NVIDIA官网文档,找到对应版本下载安装即可。
    image-20240528174213939

  5. 在Ubuntu中安装cuda toolkit
    CUDA Toolkit Archive | NVIDIA Developer在这里找对应的版本,选择x86_64 ws-ubuntu系统选择对应的安装方式即可。

  6. 配置权限

    完成第三步后如果用root账户登录直接置执行nvidia-smi可以正常使用cuda,但是用普通账户会报错Command 'nvidia-smi' not found, but can be installed with:xxx,如果需要用普通账户访问需要还需要配置权限,执行以下梁行代码:

    1
    2
    cp /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
    chmod ogu+x /usr/bin/nvidia-smi

    然后在执行nvidia-smi配置成功~
    image-20240529091424235