日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WSL2跟踪 - 18945: 通过localhost直接访问 WSL2 容器中的服务

發(fā)布時間:2023/12/8 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WSL2跟踪 - 18945: 通过localhost直接访问 WSL2 容器中的服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

WSL2跟蹤

    • 前言
    • 18945: 支持通過localhost訪問WSL2容器
      • bug: navicat 不能通過localhost直接訪問容器內(nèi)的mysql
    • WSL資料收集
      • 微軟WSL官方文檔

前言

WSL是Windows Subsystem for Linux的縮寫,即Windows系統(tǒng)的Linux子系統(tǒng),從WIN10 1607(內(nèi)部版本14393)后內(nèi)置于WIN10系統(tǒng)中,并且支持家庭版用戶的免費使用。
WSL對于那些即想擁有WINDOWS系統(tǒng)成熟的桌面環(huán)境,又想方便的使用各種Linux服務(wù)并希望在Linux系統(tǒng)下開發(fā)的人員來說非常友好。
其實回到十多年前,也有類似功能的一款軟件,它就是coLinux(Cooperative Linux的縮寫)。這款軟件的圖標(biāo)是中國的太極圖:

多么形象的圖標(biāo),企鵝-Linux和視窗-Windows統(tǒng)一在了一起。
本人曾使用coLinux很長時間,直到后來隨著windows系統(tǒng)的升級,coLinux越來越不穩(wěn)定,經(jīng)常導(dǎo)致windows藍屏而最終放棄。
在那個微軟視開源Linux系統(tǒng)為毒瘤、癌癥的年代里,coLinux可以說生不逢時。這樣一款需要與系統(tǒng)底層打交道的軟件,如果沒有微軟的合作,很難做到穩(wěn)定。今天又打開coLinux官網(wǎng),發(fā)現(xiàn)Latest News停留在了2014年5月。
十年河?xùn)|十年河西,微軟終于轉(zhuǎn)變戰(zhàn)略,調(diào)整方向,以開放的姿態(tài)擁抱Linux,而且這個腳步越來越快。
WSL發(fā)布不久,我就開始嘗試在上面工作,我能無縫的在Windows和Linux融合環(huán)境下工作,這確實是一種非常好的體驗。不過遺憾也有,比如不支持cgroup、docker、iptables、磁盤性能差等等,畢竟是windows內(nèi)核,很多問題很難解決。
面對這些問題,微軟開發(fā)了WSL2。雖然是2,但按微軟的路線圖WSL 和 WSL2 是共存、共同發(fā)展的。實際使用時,WSL 和 WSL2能夠同時運行,并且其鏡像也能在兩種模式中轉(zhuǎn)換。
WSL2是以HYPER-V虛擬化為基礎(chǔ),通過HYPER-V啟動真正的Linux系統(tǒng),使用訂制的Linux內(nèi)核(該訂制版內(nèi)核源碼微軟已經(jīng)開源到了GITHUB上,想自己編譯內(nèi)核的同學(xué)可以參考我的另外一篇BLOG - 編譯更新 WSL2 內(nèi)核至4.19.57,增加 Squashfs 支持)。
微軟公布WSL2的技術(shù)方案后,有很多用戶表示失望,認(rèn)為這種技術(shù)就是HYPER-V上跑的Linux虛機,擔(dān)心這樣會極大的犧牲性能。
本人最初也有此擔(dān)心,但當(dāng)體驗近兩個月后,本人應(yīng)該不會再回到WSL:

  • HYPER-V 加 Linux內(nèi)核并沒有感覺到降低多少啟動速度,打開WSL2容器仍然是數(shù)秒之內(nèi);
  • 真正的Linux內(nèi)核,Docker、cgroup、iptables這些服務(wù)都能正常工作。裝完WSL2后,我就把Windows上跑的Docker、Mysql 等服務(wù)遷進了容器;
  • 飽受詬病的磁盤性能問題得到解決,這種提升就象把機械硬盤換代成了SSD硬盤。
  • WSL2還在快速的更新中,在GITHUB
    WSL中,微軟的開發(fā)人員與用戶的互動也很密切,GITHUB上提的問題都能得到及時的回復(fù)。本人提出的問題得到了 Program Manager Craig Loewen
    多次及時的回復(fù)。

    工作中我會保持使用WIN10+WSL2——因為這確實是很酷的模式,并將長期關(guān)注WSL2的發(fā)展。這篇博客將長期跟蹤WSL2的發(fā)展,文中也會匯總使用中遇到的問題。

    WIN10+WSL2 這種開發(fā)模式應(yīng)該很快在開發(fā)人員中流行起來,我們拭目以待。Microsoft is in the right way ~

    18945: 支持通過localhost訪問WSL2容器

    18945之前的WSL2版本,如果我們在容器里運行了一個網(wǎng)絡(luò)服務(wù),例如啟動一個WEB服務(wù)。想在 Win10 宿主機中訪問這個WEB服務(wù),我們先要通過 ip a 或 ifconfig 命令查看其IP地址才能訪問,而且更崩潰的是每次重啟后再運行WSL2容器,其IP地址和網(wǎng)關(guān)會重新分配。

    • 截止2019/8/3日,官方文檔中還是這種方式。

    這確實是件很麻煩的事情,為此有開發(fā)者特意用golang開發(fā)了一個windows服務(wù),讓用戶快捷的獲取到WSL2的IP。
    本次更新改進了這個問題,我們在WIN10中能夠直接通過localhost 訪問到WSL2容器中的服務(wù),并且WLS2容器中的網(wǎng)絡(luò)服務(wù)也能綁定到 0.0.0.0 上

    例如:WSL2 容器內(nèi)啟動web服務(wù)器,使用python http.server模塊啟動一個WEB服務(wù)
    python3 -m http.server,默認(rèn)端口8000
    然后在win10中的web瀏覽器中訪問 http://localhost:8000/

    bug: navicat 不能通過localhost直接訪問容器內(nèi)的mysql

    github也有用戶反饋了這個問題,官方確認(rèn)是BUG并正在修復(fù)中。目前我的臨時解決方案是使用ssh隧道

    WSL資料收集

    微軟WSL官方文檔

    總結(jié)

    以上是生活随笔為你收集整理的WSL2跟踪 - 18945: 通过localhost直接访问 WSL2 容器中的服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。