基于WSL2+NVIDIA Docker的开发环境最佳实践

2023-11-14

1. Windows 11 安装WSL2 Ubuntu 22.04 LTS

1.1 安装windows附加功能

点击:设置—>应用—>可选功能—>更多windows功能
在这里插入图片描述
弹出的窗口:
在这里插入图片描述
勾选“适用于Linux的Windows子系统”和“虚拟机平台”,点击“确定”按钮。
安装完成,系统重启。

1.2 升级WSL2

下载wsl_update_x64.msi升级包,并执行安装。
在这里插入图片描述

1.3 应用商店安装Ubuntu 22.04

在这里插入图片描述

1.4 安装完成后更新系统

sudo apt update
sudo apt upgrade

2. WSL2 Ubuntu更新NVIDIA驱动

WSL2 Ubuntu系统的NVIDIA驱动版本与Windows系统中的NVIDIA驱动版本一致,升级驱动只需要升级Windows下的驱动即可随之更新。

2.1 更新Windows下NVIDIA驱动

官方GeForce驱动程序 | NVIDIA
在这里插入图片描述
可以下载自动更新程序,很方便。
GeForce Experience界面下更新至最新版本(516.94)
在这里插入图片描述

2.2 WSL2 Ubuntu下使用“nvidia-smi”命令查看更新后的版本号

nvidia驱动已经更新至了516.94,CUDA版本更新至11.7。

h@ProArt:~$ nvidia-smi
Tue Sep 20 20:27:51 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.65.01    Driver Version: 516.94       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| 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 ...  On   | 00000000:01:00.0 Off |                  N/A |
| N/A    0C    P0    23W /  N/A |      0MiB / 16384MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
h@ProArt:~$

3. 安装nvidia docker

nvidia docker官网教程

3.1 Windows下安装Docker Desktop

Docker Desktop 官网

3.2 WSL2 Ubuntu下查看docker是否安装成功

h@ProArt:~$ docker -v
Docker version 20.10.17, build 100c701
h@ProArt:~$

3.3 WSL2 Ubuntu添加nvidia-docker2安装源

 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/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

3.4 WSL2 Ubuntu下安装nvidia-docker2

sudo apt update
sudo apt install -y nvidia-docker2

3.5 可以用啦,启动一个pytorch试试呗

NVIDIA Container官网
在这里插入图片描述
搜索pytorch,当前最新版本22.08-py3。
在这里插入图片描述
按照提示用命令下载并运行pytorch docker

docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:22.08-py3

运行结果如下:
在这里插入图片描述

3.6 将docker 8888端口映射到主机8888端口

docker run --gpus all -it --rm -p 8888:8888 -v ~:/workspace \
	--ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
	nvcr.io/nvidia/pytorch:22.08-py3
h@ProArt:~$ docker run --gpus all -it --rm -p 8888:8888 -v ~:/workspace         --ipc=host --ulimit memlock=-1 --ulimit stack=67108864    nvcr.io/nvidia/pytorch:22.08-py3

=============
== PyTorch ==
=============

NVIDIA Release 22.08 (build 42105213)
PyTorch Version 1.13.0a0+d321be6

Container image Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

Copyright (c) 2014-2022 Facebook Inc.
Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
Copyright (c) 2012-2014 Deepmind Technologies    (Koray Kavukcuoglu)
Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
Copyright (c) 2011-2013 NYU                      (Clement Farabet)
Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston)
Copyright (c) 2006      Idiap Research Institute (Samy Bengio)
Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz)
Copyright (c) 2015      Google Inc.
Copyright (c) 2015      Yangqing Jia
Copyright (c) 2013-2016 The Caffe contributors
All rights reserved.

Various files include modifications (c) NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license

3.7 运行jupyter notebook

root@de33376dcdf0:/workspace# jupyter notebook
[I 14:10:11.532 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 14:10:11.869 NotebookApp] jupyter_tensorboard extension loaded.
[I 14:10:12.040 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.8/site-packages/jupyterlab
[I 14:10:12.040 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 14:10:12.041 NotebookApp] [Jupytext Server Extension] NotebookApp.contents_manager_class is (a subclass of) jupytext.TextFileContentsManager already - OK
[I 14:10:12.042 NotebookApp] Serving notebooks from local directory: /workspace
[I 14:10:12.042 NotebookApp] Jupyter Notebook 6.4.10 is running at:
[I 14:10:12.042 NotebookApp] http://hostname:8888/?token=cea64a4c499ce3e282f892b086fcceeb1fbe25a65494ef16
[I 14:10:12.042 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 14:10:12.044 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///root/.local/share/jupyter/runtime/nbserver-387-open.html
    Or copy and paste this URL:
        http://hostname:8888/?token=cea64a4c499ce3e282f892b086fcceeb1fbe25a65494ef16
[I 14:10:19.602 NotebookApp] 302 GET / (172.17.0.1) 0.400000ms
[I 14:10:19.606 NotebookApp] 302 GET /tree? (172.17.0.1) 0.570000ms

主机浏览器访问“127.0.0.1:8888”,运行正常。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于WSL2+NVIDIA Docker的开发环境最佳实践 的相关文章

随机推荐

  • notepad 自动换行 分屏 快捷键

    一 自动换行 视图 gt 自动换行 二 分屏 Tab标签 上方文件名 右键 gt 移动到另一视图 三 快捷键 快速复制 Ctrl D 区块注释 Ctrl Shift Q 保存所有打开文件 Ctrl Shift S 行注释 Ctrl K 取消
  • 内卷化时代,一名普通测试员的铁饭碗究竟是什么?

    内卷 是现在热度非常高的一个词汇 随着热度不断攀升 隐隐有了 万物皆可卷 的程度 究其来源 内卷这个词的出现 是伴随着996开始讨论的 很不幸 996 福报等等这些词的重灾区和源头就是计算机 互联网行业 那么作为行业中一个非常重要的分支 测
  • web前端模块化框架,一句代码让html可直接引入别的html文件

    web前端模块化框架 介绍 一个web前端模块化框架 可以引入模板html文件 利于前后端分离的网站重复代码以及模块的复用 软件架构 本框架是利用mloader js文件加载带有mloader template的类的标签从而进行的文档的动态
  • 基于Keil创建汇编语言的STM32工程

    本文是在Keil嵌入式开发环境下完成一个基于STM32汇编程序的编写 学习在没有硬件条件下进行仿真调试 观察ARM寄存器的变化状况 记录过程生成的 hex文件各段的大小 了解Hex文件格式及其前8个字节内容含义 文章目录 一 新建工程 二
  • 建立双机调试

    1 首先你得有一个VMware 我这里是VM10 主机是64windows操作系统 2 我在虚拟机中装了32 位win7 3 下载 VirtualKD 我预先放在百度云盘的资源 https pan baidu com s 1eRD4AR4
  • C# 系统应用之无标题窗体移动的两种方法

    在做项目界面设计中 常常为了美观需要设置窗体属性 FormBorderStyle 窗体边框和标题栏外观 为None无标题窗口 此时隐藏标题的窗口怎样实现移动呢 我根据自己的项目从自己完成的两种方法进行讲解 一 MouseDown Mouse
  • TypeScript的类型推导

    TypeScript 简称ts 是一种静态类型的编程语言 在类型检查和类型推导方面具有一定的优势 类型推导是TypeScript在代码编写的过程中自动识别并设置变量类型 从而提高代码的可读性和健壮性 减少了代码中潜在的错误 在 TypeSc
  • 编译原理实验一:词法分析

    实验一 词法分析程序 一 实验目的 通过设计编制调试一个具体的词法分析程序 加深对词法分析原理的理解 并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法 编制一个读单词过程 从输入的源程序中 识别出各个具有独立意义的
  • 网络入门基础(网络布线)

    目录 前言 一 布线系统 1 工作区子系统 2 水平子系统 3 垂直子系统 4 管理子系统 5 设备间子系统 6 建筑群子系统 二 布线材料 1 线槽 2 桥架 走线架 3 配线架 三 网络机柜 四 网络布线 1 需求分析与走线设计 2 估
  • STM32F1之485通信

    485与PC通信 准备工作 首先我们需要准备的工具是一根USB 485转接数据线 STM32F103单片机 也可以是其他单片机 思想思路类似 两根公对公杜邦线 为了让板子和转接口连接 连线工作本人用的485转接器是T R 接F103单片机B
  • zookeeper启动报错:-bash: zkServer.sh: command not found

    zkServer sh command not found 明明已经进入了zookeeper的安装目录bin下了 执行zkServer sh start 没有这个命令 有这个命令 但启动不了 我的两种解决方法 1 一种是到zookeeper
  • 关于Ant自动化编包问题排查价格小思路

    1 确定一下JDK环境变量是否正确 何为是否正确 也就是源码所需要的版本和环境变量所需要的版本是否一致 2 确定引入的中间版本是否正确 同JDK 3 是否使用了正确的编译器 何为使用了正确的编译器 正常情况下不需要指定编译器 使用环境变量配
  • 编码器输出:HTL、TTL

    HTL 即常说的推挽 就是NPN PNP的组合 所以其同时支持PNP与NPN控制电路 电路简单 好用 工作电压较宽 编码器常用5到30V均可 注 HTL输出信号电平一般等同工作电压减三极管压降 有较强的抗干扰能力 它的主要缺点是工作速度比较
  • 如何在华三H3C交换机开启http或web界面远程登录管理

    华三交换机开启web界面实验 现在很多的华三交换机和路由器默认已经自带了WEB图形界面 只需要电脑配置一个互通的ip地址连接后就能登录到web界面 操作管理起来非常方便 但有时某些是没有开启web界面的 下面就以华三模拟器交换机为例操作配置
  • < C++ >:C++ 类和对象(上)

    目录 1 面向过程和面向对象的初步认识 2 类的引入 3 类的访问限定符及封装 3 1 访问限定符 3 2 封装 4 类的声明和定义或类的定义 可以理解成声明和定义 5 类的作用域 6 类的实例化 7 类对象模型 7 1 如何计算类对象的大
  • 释放技术的想象-解码腾讯云软件架构与应用

    欢迎大家前往腾讯云社区 获取更多腾讯海量技术实践干货哦 关于腾讯 你可能玩过 王者荣耀 你可能用过 微信 和它的 小程序 你可能看过 腾讯视频 并且曾为之付费 你可能已经是多年的 QQ 老手但还不知道什么是 MQ 作为成立多年的老牌互联网公
  • 为何零信任架构身份管理平台更可靠?

    随着信息技术的不断进步 云计算 物联网以及移动设备的普及 信息泄露等安全问题愈发频繁 近期 一起某高校学生的信息泄露事件引发了大家的广泛讨论 该校学生利用其身份便利 非法获取了大量学生的姓名 学号 照片等隐私信息 这次热门话题的讨论后 人们
  • python实现排列组合代码

    def combination n c com 1 limit 0 per for pos in range limit n t per pos if len set t len t if len t c yield pos else fo
  • 22道常见RocketMQ面试题以及答案

    面试宝典到手 搞定面试 不再是难题 系列文章传送地址 请点击本链接 1 RocketMQ是什么 2 RocketMQ有什么作用 3 RoctetMQ的架构 4 RoctetMQ的优缺点 8 消息过滤 如何实现 9 消息去重 如果由于网络等原
  • 基于WSL2+NVIDIA Docker的开发环境最佳实践

    1 Windows 11 安装WSL2 Ubuntu 22 04 LTS 1 1 安装windows附加功能 点击 设置 gt 应用 gt 可选功能 gt 更多windows功能 弹出的窗口 勾选 适用于Linux的Windows子系统 和