本文正在参加「金石方案」

欢迎关注我的大众号 [极智视界],获取我的更多经历共享

大家好,我是极智视界,本文介绍一下 win11 + wsl2 + docker + vscode 开发环境构建。

邀您参加我的常识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:t.zsxq.com/0aiNxERDq

开发方式其实有很多种,最常见的可能是 linux + ide 或者 linux + docker + ide 了,这儿的 w11 + wsl2 + docker + vscode 其实能够看成是 w11衍生出的linux + docker + ide

折腾了几天,写个教程经历共享一下。

一、装置w11

装置 w11 就不多说了,能够挑选u盘装置也能够直接软件装置。由于后面下载 wsl2 需求到Microsoft Store,所以需求激活一下以敞开 Microsoft Store 的悉数功能。不会windows激活的小伙伴能够在我的大众号「极智视界」内回复 windows激活 ,能够获取到屡试不爽的简便的激活办法。

二、装置wsl2

首要确保虚拟化选项敞开,若未敞开,则进 BIOS 敞开。现在的机器一般都是默许敞开的,能够进 任务管理器 -> 性能检查。

极智开发 | win11+wsl2+docker+vscode开发环境构建

然后继续装备,翻开 控制面板->程序->启用或关闭 windows 功能,敞开 Windows 虚拟化Linux 子体系(WSL2) 以及 Hyper-V,勾选完结后重启电脑。

极智开发 | win11+wsl2+docker+vscode开发环境构建

以管理员翻开 PowerShell 终端履行如下指令:

bcdedit /set hypervisorlaunchtype auto

好,然后翻开 Microsoft Store,以装置 ubuntu 为例,则查找 ubuntu,会出来几个安稳版别,一般便是 ubuntu1804、ubuntu2004、ubuntu2204,挑选一个自己喜欢的进行装置就行。

极智开发 | win11+wsl2+docker+vscode开发环境构建

发动 ubuntu 的时分装备用户名和密码,wsl 也内置了一些指令,能够检查状态、切换 wsl 版别、停止掉 wsl 等,比方若要检查 wsl 的默许版别,能够在 PowerShell 终端输入:

wsl -l --all
极智开发 | win11+wsl2+docker+vscode开发环境构建

三、装置docker

这儿也是我”折腾”了几天的主要原因,按网上一些教程 –> 装置 Docker Desktop(软件)后,在 wsl2 中运用 docker 的方式,我在 docker run nvidia-docker 的时分就卡死了,试过一些所谓的文件io不跨体系、daemon.json装备、装置wsl-cuda-toolkit 以及 ubuntu1804/ubuntu20.04 中都不行。后来采用 wsl-cuda-tookkit + 抛弃Docker Desktop的方式成功,这种方式也便是直接在 wsl2 中经过指令行进行 docker 和 nvidia-docker 的装置。

这儿还会有一个坑,便是在 wsl 中就得用 wsl 的 cuda-toolkit,不能用我们平常用的 cuda-toolkit,否则在 run nvidia-docker 的时分同样会卡死。

下面说说我的办法。

首要去 NVIDIA 官网下载 wsl cuda-toolkit,官网下载地址:developer.nvidia.com/cuda-downlo…

比方我这儿挑选 cuda11.1.1 的版别,如下。

极智开发 | win11+wsl2+docker+vscode开发环境构建

以装置 runfile 包为例,其实就两条指令:

# 下载包
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
# 装置
sudo sh cuda_11.1.1_455.32.00_linux.run

接着进行常规的 ubuntu 环境的 docker 装置方式进行。

# 卸载旧版别docker ==> 由于本身纯洁,履行不履行这条指令都不要紧
sudo apt remove docker docker-engine docker-ce docker.io 
# 更新包
sudo apt update 
# 装置以下包以使apt能够经过HTTPS运用存储库(repository)
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# 增加docker官方密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 再次更新apt包
sudo apt update
# 装置最新docker CE
sudo apt install -y docker-ce 
# 装置nvidia-docker
# 增加源
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 update
# 装置
sudo apt install -y nvidia-container-toolkit
# 发动docker server
sudo service docker restart

这样,已经成功装置好并发动了 wsl2 中的支撑 GPU 调用的 docker 了,能够运用下面的指令测试

docker run --rm --gpus all nvidia/cuda:11.1.1-devel-ubuntu18.04 nvidia-smi
极智开发 | win11+wsl2+docker+vscode开发环境构建

这儿你如果报权限的错误,如:permission denied while trying to connect to the Docker daemon socket xxx permission denied ==> 则能够把docker用户组参加sudo,或直接运用sudo docker指令

至此 wsl2 中的 docker 已经装置完结。

四、装备vscode长途

先把 wsl2 中的 openssh-server 给卸了,它预装的可能并不完好,我们重新装一下。

# 更新包
sudo apt update
# 卸载&重装openssh-server
sudo apt remove openssh-server
sudo apt install openssh-server

接下来需求装备 openssh-server,修正 sshd_config 文件:

# vim翻开sshd_config
sudo vim /etc/ssh/sshd_config

进入 sshd_config后,需求修正的装备如下,自己找一下对应进行修正:

Port 3333                   # 设置端口为3333
LoginGraceTime 120
StrictModes yes
PermitRootLogin yes         # 答应root长途登录
PasswordAuthentication yes  # 密码验证登录

拓宽一句,若想免密登录,则能够翻开 AuthorizedKeysFile .ssh/authorized_keys,并将你的开发机器/宿主机的 id_rsa.pub >> authorized_keys,然后将宿主机的authorized_keys拷贝到wsl的 ~/.ssh下 ==> 不会的找我

修正结束后,保存退出 vim,重启 ssh 服务:

sudo service ssh --full-restart

需求留意的是,上面我们装备了 3333 端口,可是这个端口大概率是被 windows 防火墙阻拦的,那么怎样放开呢,按我说的做。

  • 进入防火墙,顺次点击 高档设置 -> 入站规矩 -> 新建规矩
极智开发 | win11+wsl2+docker+vscode开发环境构建
  • 顺次点击 端口 -> 下一页 -> TCP -> 特定本地端口
  • 特定本地端口中输入我们刚才设置的 3333 端口,点击 下一页
  • 点击 答应连接 -> 下一页 -> 下一页,最后填写 称号 -> 完结

这样 ssh 环境就装备好了,我们能够用指令行 ssh 一下看能不能连上 wsl2,翻开 PowerShell,输入如下指令:

ssh username@ip -p 3333  # username和ip替换成你实际的

这样能登录上后,再回到 vscode 的长途就简略了,先装置好 vscode 的 remote-ssh 插件,然后翻开 config装备:

Host wsl2_ubuntu18.04
    HostName ip
    User username
    Port 3333

这样就大功告成了。


能够看到整个 win11 + wsl2 + docker + vscode 开发环境的装备过程其实涉及到挺多的常识点/技术点。其实,考虑文章可能篇幅过长,对于 wsl2经过Hyper-V固定ip、wsl2根目录迁移出c盘、docker根目录迁移,特别是vscode怎么长途到wsl2中的docker办法 (这儿是长途到了wsl2,还没到docker内) 等还没有介绍,可是这些只是 “锦上添花”,这些并不影响这儿的 win11 + wsl2 + docker + vscode 工具链开发环境的完好构建。

开发经历共享不宜篇幅过长,后面有机会再写写好了。

好了,以上共享了 win11 + wsl2 + docker + vscode开发环境构建,希望我的共享能对你的学习有一点协助。


 【大众号传送】

《极智开发 | win11+wsl2+docker+vscode开发环境构建》


畅享人工智能的科技魅力,让好玩的AI项目不难玩。邀请您参加我的常识星球, 星球内我精心整备了大量好玩的AI项目,皆以工程源码形式敞开运用,涵盖人脸、检测、切割、多模态、AIGC、自动驾驶、工业等。不敢说会对你学习有所协助,但必定十分好玩,并继续更新愈加有趣的项目。 t.zsxq.com/0aiNxERDq

极智开发 | win11+wsl2+docker+vscode开发环境构建