win10 新版 wsl2 使用指南


 

 

本篇文章會介紹 win10 中 wsl2 的安裝和使用以及遇到的常見問題比如如何固定 wsl2 地址等問題的總結。

 

一、wsl2 簡介

 

wsl 是適用於 Linux 的 Windows 子系統,安裝指南:適用於 Linux 的 Windows 子系統安裝指南 (Windows 10)

 

簡單來說,以前想在 windows 中使用 linux,需要安裝 vmware 虛擬機,現在則不比這么麻煩了,直接安裝 linux 子系統,秒開。

 

二、使用 wsl2

 

按照官方文檔安裝好 wsl2 之后,再順便安裝下 Windows 終端,一起使用,效果更佳。

 

安裝好 wsl2 后,直接在菜單中找到對應的 wsl 終端直接打開即可,第一次用的時候讓你初始化一個用戶名和密碼,根據提示幾秒鍾即可初始化完成。

 

安裝好之后就可以愉快的玩耍了,貌似一切都 ok。。。慢着,用久了,你會發現一些問題:

 

1. 安裝軟件太慢了

 

比如我使用的 ubuntu20,安裝和更新軟件都特別慢,因為畢竟國內,這時候就要使用國內鏡像進行加速 [0]

 

第一步:備份源文件

 

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

 

第二步:編輯 / etc/apt/sources.list 文件

 

在文件最前面添加以下條目,之后保存即可生效 (以阿里雲鏡像為例,操作前請做好相應備份):

 

vi /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

 

2. wsl2 地址每次重新開機之后都會發生變化

 

一般來說這不是什么大問題,但是別忘了我們要 wsl 是干啥的,我們總是希望能夠在 windows 中訪問 wsl 中的一些服務,比如安裝的 mysql、redis 等,如果 wsl 的 ip 地址總是變化,豈不是每次開機都要在 windows 中手動設置一次 ip 地址 [1]?固定 ip 地址的方法比較簡單,直接運行以下腳本即可,我這里安裝了 docker,有些小伙伴沒安裝 docker 則需要修改下腳本才行。

 

@echo off
setlocal enabledelayedexpansion

wsl -u root service docker start | findstr "Starting Docker" > nul if !errorlevel! equ 0 ( echo docker start success :: set wsl2 ip wsl -u root ip addr | findstr "192.168.169.2" > nul if !errorlevel! equ 0 ( echo wsl ip has set ) else ( wsl -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1 echo set wsl ip success: 192.168.169.2 ) :: set windows ip ipconfig | findstr "192.168.169.1" > nul if !errorlevel! equ 0 ( echo windows ip has set ) else ( netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240 echo set windows ip success: 192.168.169.1 ) ) pause

 

將它保存到文件,比如划分虛擬局域網&啟動docker.bat,然后將其放到 windows 啟動目錄下 [2]

 

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

 

之后,每次電腦啟動之后就會自動執行該腳本了

 

3.windows 本地 ssh 登陸 wsl2

 

首先,wsl 中已經安裝的 ssh 是不完整的或者有問題的,所以無論你怎么改都不會生效,甚至 ssh 服務都無法正常啟動,正確的做法是先卸載 ssh 再重新安裝。

 

sudo apt-get purge openssh-server # purge 是卸載並刪除配置文件 sudo apt-get install openssh-server

 

然后修改配置文件 / etc/ssh/sshd_config,新增如下配置

 

PermitRootLogin yes

 

修改PasswordAuthentication配置項為 yes,修改Port端口號為2222(22 端口比較特殊,windows 可能會使用到)

 

使用命令 service sshd restart重啟 ssh 服務

 

做完以上修改之后,解決了第一個問題,即如何在 windows 使用工具 ssh 連接 wsl2, 接下來要做的事情是如何在局域網中遠程登陸 wsl2。

 

4. 局域網遠程登陸 wsl2

 

首先分析下為啥局域網其他機器無法連接 wsl2

  • 第一個原因,windows 防火牆沒關閉或者沒有設置入站規則
  • 第二個原因,也是最本質的原因, wsl2 的地址是虛擬地址,並非是局域網中的物理地址

 

那怎么解決呢?

 

  1. 關閉防火牆或者設置入站規則
    其中設置入站規則是推薦的方式,網上教程較多,不贅述。
  2. 設置端口轉發,讓 windows 轉發來自特定端口的請求到 wsl2
    設置端口轉發的方法如下:

 

interface portproxy add v4tov4 listenport=【宿主機windows平台監聽端口】 listenaddress=0.0.0.0 connectport=【wsl2平台監聽端口】 connectaddress=【wsl2平台ip】

 

比如,我這里使用如下命令配置了 win10 IpV4 協議端口號 2222 轉發到地址為 192.168.169.2 的 wsl 端口號 2222

 

netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=192.168.169.2

 

  1. 查看端口轉發

 

netsh interface portproxy show all

 

  1. 刪除端口轉發

 

netsh interface portproxy delete v4tov4 listenport=9696 listenaddress=0.0.0.0

 

完成以上四步設置,即可在局域網使用 securityCRT 工具或者 putty 遠程連接 wsl 了。

 

三、在 wsl 中使用 docker

 

1. 安裝 docker

 

正常來說,應當上 docker 官網按照安裝文檔來安裝,但是你會發現及時你更新了源,安裝速度仍然特別慢,高速打開方式 [3] 為

 

sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io

 

2. 安裝 docker-compose

 

同理,正常來說,docker-compose 的安裝方式應該遵循官方網站的指導 https://docs.docker.com/compose/install/ ,但是會非常慢,還是要另辟蹊徑 [4]

 

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

 

最后,歡迎關注我


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM