介紹
WSL(windows subsystem for linux)是在windows系統(tǒng)下運(yùn)行的linux子系統(tǒng),當(dāng)我們需要linux環(huán)境的時候,用虛擬機(jī)性能損耗會非常嚴(yán)重,這時候我們可以選擇使用WSL。這篇文章介紹了我在安裝和使用WSL中的一些坑,希望將來的人能少走彎路。
安裝
參考微軟的文檔 https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 安裝。
我遇到的一些問題:
WSL1的linux內(nèi)核是不完整的,可能沒辦法運(yùn)行一些程序,WSL2使用的是完整的linux內(nèi)核,運(yùn)行效率也更高一些。WSL1和WSL2的比較 https://docs.microsoft.com/zh-cn/windows/wsl/compare-versions ,看個人需求選擇WSL1和WSL2。
-
目前使用WSL2 需要將系統(tǒng)更新到 Windows 10 版本 2004(內(nèi)部版本 19041),而更新到這個版本需要加入 Windows 預(yù)覽體驗計劃并選擇“Release Preview”圈,按照微軟的設(shè)置來就好了。
PS:更新系統(tǒng)最好將一些殺毒軟件給卸載掉,我因為安裝了360導(dǎo)致更新失敗。
常用軟件
配制Ubuntu鏡像 https://developer.aliyun.com/mirror/ubuntu
docker
可以在windows下安裝docker desktop,然后設(shè)置使用wsl2的引擎使用。
或者在docker的官網(wǎng)上按照教程安裝docker。
docker配置阿里云鏡像加速
靜進(jìn)入網(wǎng)址:https://cr.console.aliyun.com/cn-hangzhou/mirrors
此處需要一個阿里云的賬號,沒有的話可以使用支付寶登錄
登錄進(jìn)去會跳轉(zhuǎn)到容器鏡像服務(wù),需要密碼
接下來按照里面的教程進(jìn)行設(shè)置即可
vs code
在windows的vscode里安裝Remote WSL插件之后可以在linux的子系統(tǒng)中通過輸入code命令使用vscode。
文件共享
文件共享也非常方便,啟動WSL命令行的時候,默認(rèn)訪問的便是我們Windows的用戶目錄。
而要從Windows下訪問Linux中文件,則可通過網(wǎng)絡(luò)磁盤映射:\wsl$\Ubuntu 路徑,這樣整個Linux文件系統(tǒng)都可以暴露給Windows。
訪問網(wǎng)絡(luò)應(yīng)用程序
從 Windows (localhost) 訪問 Linux 網(wǎng)絡(luò)應(yīng)用
如果要在 Linux 分發(fā)版中構(gòu)建網(wǎng)絡(luò)應(yīng)用(例如,在 NodeJS 或 SQL server 上運(yùn)行的應(yīng)用),可以使用 localhost 從 Windows 應(yīng)用(如 Edge 或 Chrome Internet 瀏覽器)訪問它(就像往常一樣)。
但是,如果運(yùn)行的是較舊版本的 Windows(版本 18945 或更低版本),則需要獲取 Linux 主機(jī) VM 的 IP 地址(或更新到最新的 Windows 版本)。
若要查找為 Linux 分發(fā)版提供支持的虛擬機(jī)的 IP 地址,請執(zhí)行以下操作:
在 WSL 分發(fā)版(即 Ubuntu)中運(yùn)行以下命令:
ip addr查找并復(fù)制
eth0接口的inet值下的地址。如果已安裝 grep 工具,請通過使用以下命令篩選輸出來更輕松地查找此地址:
ip addr | grep eth0使用此 IP 地址連接到 Linux 服務(wù)器。
從 Linux(主機(jī) IP)訪問 Windows 網(wǎng)絡(luò)應(yīng)用
如果要從 Linux 分發(fā)版(即 Ubuntu)訪問 Windows 上運(yùn)行的網(wǎng)絡(luò)應(yīng)用(例如,在 NodeJS 或 SQL 服務(wù)器上運(yùn)行的應(yīng)用),則需要使用主機(jī)的 IP 地址。 雖然這不是一種常見方案,但你可以執(zhí)行以下步驟來使其可行。 - 通過在 Linux 分發(fā)版中運(yùn)行以下命令來獲取主機(jī)的 IP 地址:cat /etc/resolv.conf - 復(fù)制以下詞語后面的 IP 地址:nameserver。 - 使用復(fù)制的 IP 地址連接到任何 Windows 服務(wù)器。
其他網(wǎng)絡(luò)注意事項
通過遠(yuǎn)程 IP 地址進(jìn)行連接
當(dāng)使用遠(yuǎn)程 IP 地址連接到應(yīng)用程序時,它們將被視為來自局域網(wǎng) (LAN) 的連接。 這意味著你需要確保你的應(yīng)用程序可以接受 LAN 連接。
例如,你可能需要將應(yīng)用程序綁定到 0.0.0.0 而非 127.0.0.1。 以使用 Flask 的 Python 應(yīng)用為例,可以通過以下命令執(zhí)行此操作:app.run(host='0.0.0.0')。 進(jìn)行這些更改時請注意安全性,因為這將允許來自你的 LAN 的連接。
從局域網(wǎng) (LAN) 訪問 WSL 2 分發(fā)版
當(dāng)使用 WSL 1 分發(fā)版時,如果計算機(jī)設(shè)置為可供 LAN 訪問,那么在 WSL 中運(yùn)行的應(yīng)用程序也可供在 LAN 中訪問。
這不是 WSL 2 中的默認(rèn)情況。 WSL 2 有一個帶有其自己獨一無二的 IP 地址的虛擬化以太網(wǎng)適配器。 目前,若要啟用此工作流,你需要執(zhí)行與常規(guī)虛擬機(jī)相同的步驟。
WSL2 分發(fā)版目前無法訪問純 IPv6 地址。
參考資料:
http://m.itdecent.cn/p/6b02948b3d37
https://www.liumingye.cn/archives/326.html
https://zhuanlan.zhihu.com/p/104771275?utm_source=cn.wiz.note