[kubernetes]-win10上运行GPU容器

测试结果:win10可以使用wsl2在docker中使用GPU

[kubernetes]-win10上运行GPU容器_第1张图片

测试步骤如下:

安装wsl2

搜索中打开启用或关闭windows功能

开启适用于linux的windows子系统 如果有问题的话虚拟机平台也开启

[kubernetes]-win10上运行GPU容器_第2张图片

在powershell下执行下面命令效果相同。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

需要确保windows版本 大于win10 v2004 的内部版本 19041 或更高版本

可以通过在快捷键win+r ,输入winver 查看自己的windows版本

[kubernetes]-win10上运行GPU容器_第3张图片

版本不达标可以通过以下升级工具升级

https://www.microsoft.com/zh-cn/software-download/windows10

[kubernetes]-win10上运行GPU容器_第4张图片

升级成功并重启windows

安装windows terminal

登录微软商店账号,搜索terminal 并安装对应服务

[kubernetes]-win10上运行GPU容器_第5张图片

这里先用管理员运行powershell

# 设置一下默认的版本  不然后面切换版本比较麻烦  切换异常得删除ubuntu18,再安装一次
wsl --set-default-version 2

安装ubuntu18.04

如果c盘不够大,可以先执行安装,安装完成之后参考下方修改安装路径

安装完毕后在商店搜索安装Ubuntu 18.04 LTS

[kubernetes]-win10上运行GPU容器_第6张图片

安装完成之后点击打开 ,系统会自动执行初始化

[kubernetes]-win10上运行GPU容器_第7张图片

初始化完成之后 输入登录系统的用户名及密码

deepwise/XJM@151089

重新打开windows 的terminal之后 可以通过terminal的下拉框来登录ubuntu

[kubernetes]-win10上运行GPU容器_第8张图片

可以通过sudo -i切换到root用户

# 给deepwise用户 免密操作
sudo echo "deepwise ALL=(ALL:ALL) NOPASSWD: ALL" >>/etc/sudoers 

更换阿里源

cp /etc/apt/sources.list /etc/apt/sources.list.bak

echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-security universe
deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse">/etc/apt/sources.list

更新源

apt update 
# apt upgrade -y

powershell切换wsl1到wsl2

# 查看当前版本
wsl -l -v 
# 如果是2的话 不用切换了
wsl --set-version Ubuntu-18.04  2

[kubernetes]-win10上运行GPU容器_第9张图片

确保WSL2的linux内核为4.19.121以上

# 查看内核版本
uname -a

提示"WSL 2 需要更新其内核组件”。下载并安装 WSL2 Llinx内核后再执行上面的命令,这个可能需要一会时间。

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

在win10系统下安装wsl显卡驱动

安装wsl的显卡驱动 以便在docker中可以获取到GPU 这里需要安装的win10的驱动,而非linux版本的驱动

https://developer.nvidia.com/cuda/wsl

[kubernetes]-win10上运行GPU容器_第10张图片

如图 还没有安装nvidia驱动启动容器调用GPU会报错

[kubernetes]-win10上运行GPU容器_第11张图片

安装docker

sudo apt-get update

sudo apt-get install -y \
    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 -y docker-ce docker-ce-cli containerd.io

安装NVIDIA Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

安装nvidia-docker2

sudo apt-get update
sudo apt-get install -y nvidia-docker2

启动docker

sudo service docker stop
sudo service docker start
sudo nvidia-docker version

[kubernetes]-win10上运行GPU容器_第12张图片

测试

sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

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())

[kubernetes]-win10上运行GPU容器_第13张图片


额外补充

挂载磁盘

wmic diskdrive list brief
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
wsl --mount 
# D盘默认会挂载在/mnt/d

修改ubuntu安装路径

需要下载发行版https://docs.microsoft.com/zh-cn/windows/wsl/install-manual

[kubernetes]-win10上运行GPU容器_第14张图片

我下载到的文件名为:Ubuntu_1804.2019.522.0_x64.appx

默认安装到C盘,随着Ubuntu的使用,后续有可能会占满C盘,为了方便使用,我们安装它到其它盘。

使用压缩软件打开Ubuntu_1804.2019.522.0_x64.appx(它本身就是一个压缩包),解压出里面的install.tar.gz文件备用。

导入Ubuntu

打开Windows Terminal,默认会进入命令行,输入:

#命令格式:wsl --import <发行版名字> <安装位置> <文件名> [选项]

# 导出 测试过程中导出,直接安装会有网络问题
# wsl --shutdown
# wsl --export Ubuntu-18.04  D:\ubuntu18_04.tar
wsl --import Ubuntu-18.04  D:\ubuntu18_04 D:\ubuntu18_04.tar
wsl -l -v 
# 如果需要删除
# wsl --unregister Ubuntu-18.04

[kubernetes]-win10上运行GPU容器_第15张图片

等待命令完成后,打开D:wsl2ubuntu目录,看到有一个 ext4.vhdx文件,刚开始安装完成时大约有1.2G左右(后续使用会变大),即为安装好的Ubuntu。

[kubernetes]-win10上运行GPU容器_第16张图片

[kubernetes]-win10上运行GPU容器_第17张图片

重新打开terminal就会显示刚刚安装的ubuntu18.04

如果报错,需要对部分包进行降级

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

参考

nvidia-docker2官方安装文档

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

win11参考

https://zhuanlan.zhihu.com/p/434239083

其他

https://blog.csdn.net/m0_49648190/article/details/118978891

https://blog.csdn.net/qq_35818865/article/details/124083724

https://www.cnblogs.com/zongzc/p/15955848.html

挂载

https://docs.microsoft.com/en-us/windows/wsl/wsl2-mount-disk

修改ubuntu的安装路径

https://www.wzy2.com/93247.html

你可能感兴趣的:(kubernetes,运维,kubernetes)