Windows 10 之 WSL 2


Windows Subsystem for Linux(WSL)無疑大大提升了Windows下程序開發的體驗。

WSL 2向開發者提供的完整的系統調用兼容,使得許多無法在WSL 1中安裝的應用,如Docker在WSL 2下成為可能。

WSL 2要求Windows 10 build 18917 或更高版本,否則無法使用。

查看Win10構建號

win + R
輸入:
winver

彈窗如下,顯示當前的構建號:

如果build低於18917,就需要升級Win 10。

更新Win10到18917+

參考:

https://www.jb51.net/os/win10/678060.html

WSL 1升級WSL2

由於筆者的Win10已經安裝了WSL 1,因此需要從WSL 1升級到WSL 2。

首先啟用“虛擬機平台”可選組件,在管理員身份打開的PowerShell中輸入:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

執行成功后立即重啟生效。

接着使用命令行設置要由 WSL 2 支持的發行版,在 PowerShell 中運行:

wsl --set-version <Distro> 2

並確保將 <Distro> 替換為發行版的實際名稱。 (可以使用以下命令查看:wsl -l)。

由於筆者使用的是Ubuntu發行版,因此在powershell中執行:

wsl --set-default-version 2
wsl --set-version Ubuntu 2

其中wsl --set-default-version 2 將今后所有安裝WSL發行版初始化為WSL 2發行版。等待上述轉換完成,這個過程可能會花費一些時間。

接着就可以在powershell中執行:

wsl -l -v

查看使用的WSL的版本。如:

PS C:\WINDOWS\system32> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2

在Win10中安裝SSH Client

參考:

https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

Powershell啟動WSL

參考:

https://devblogs.microsoft.com/commandline/a-guide-to-invoking-wsl/

即只要在PowerShell中輸入:

wsl

即可啟動WSL。

通過PowerShell命令:

wsl --shutdown

也可以關閉當前運行的所有WSL實例。

除了PowerShell這種方式外,Windows還提供了快捷方式,我們的WSL通常是從Win 10的應用商店中安裝的,找到Win 10本地安裝WSL應用后的快捷方式,也可啟動同時彈出對應WSL的終端。

WSL中安裝SSH服務並啟動

這個過程相當於在Linux中安裝sshd,相關資料非常多,這里不贅述。

后續可以在Win 10中通過ssh客戶端訪問WSL,好處是可以使用自己喜歡的終端工具。

VSCode安裝Remote Development套件

VSCode集成了對WSL的支持,便於在VSCode開發時操作WSL。

參考:

https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

VSCode中配置SSH Config連接配置文件

示例:

Host WSL-UBUNTU
    HostName 172.31.165.60
    User darren

其中172.31.165.60是在WSL中執行網絡查看命令如ifconfig查詢到的。

VSCode連接成功WSL后,VSCode后續打開的所有Terminal都將是WSL上的終端,而不是Win10本地的終端。

VSCode打開WSL目錄

在VSCode連接到WSL中之后,打開VSCode中的終端,此時終端連接的是WSL,在終端中cd到目標目錄,輸入:

code .

即可在VSCode中打開WSL內系統的目錄。

Win 10 訪問 WSL內部文件系統

如果我們想在Win 10和WSL之間進行文件的傳輸,Windows提供了非常方便的支持,上述通過VSCode是一種方式。

此外,在WSL中的用戶home目錄,輸入:

explorer.exe .

Win 10就會彈出一個資源瀏覽器,支持以Windows窗口的形式瀏覽WSL中的文件系統,非常方便。

此外,PowerShell提供了一種訪問WSL的命令行形式:

cd \\wsl$\{distro_name}\

例如,我的WSL是Ubuntu發行版,就在PowerShell下輸入:

cd \\wsl$\Ubuntu

即可在PowerShell中瀏覽WSL的文件系統了。

WSL 2的神坑

原本當我在WSL 2 Ubuntu中安裝了Docker-CE,這一在WSL 1中不敢想的事情時,我非常開心,覺得Windows在開發方面終於可以越來越接近MacBook,同時可以和Windows的虛擬機說拜拜了。

但是后續的使用中發現了 WSL 2存在的一個神坑,即每次重啟Windows系統,WSL實例的IP地址就會動態變動,哈哈哈哈哈哈哈,每次查WSL實例的IP也是醉了。

當然網上也有一些開源的解決方案如每次啟動時動態查詢其IP,然后修改Windows的hosts文件,應用對WSL的訪問不要使用IP而是用hosts文件中的主機名等等。

然而我還是覺得為WSL分配固定的IP應該是開發者的剛需,估計后續的Win 10版本也應該會修復這個問題。

總體說來,瑕不掩瑜,筆者已經在Windows 10 WSL 2愉快的玩Docker了,隨着Win 10的不斷成熟,我相信借助WSL應該會成為今后Windows上集成Docker的主流方式。


免責聲明!

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



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