最詳盡教程完整介紹-Windows 的 Linux 子系統-WSL1&WSL2


安裝 WSL

1. 開啟WSL

必須啟用“適用於 Linux 的 Windows 子系統”可選功能並重啟,然后才能在 Windows 上運行 Linux 發行版。

以管理員運行Powershell(開啟WSL,如已開啟可跳過)

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform --啟用“虛擬機平台”可選組件

image.png

2. 安裝WSL Linux發行版本

image.png

比較 WSL 1 和 WSL 2

WSL 1 和 WSL 2 之間的主要區別在於,在托管 VM 內使用實際的 Linux 內核、支持完整的系統調用兼容性以及跨 Linux 和 Windows 操作系統的性能。
image.png

WSL2相比WSL1來說可以完美支持Docker。與WSL1的模擬Linux API不同的是,WSL2采用在Hyper-V虛擬機中運行的方案。可以說WSL2和原汁原味的Linux已經十分接近

  • WSL1 沒有 Linux 內核,不支持 docker;WSL2 是有 Linux 內核的輕量化虛擬機,支持 docker。
  • 目前 docker 已經針對 WSL2 做了適配,安裝時檢測到 WSL2 就會啟用 WSL2 后端,不僅能同時在 Windows 和 WSL 下操作 docker 服務器,還比以前的 docker on Windows 啟動更快、占用資源更少。

image.png

WSL1

不支持Docker的守護進程,但您可以使用Docker CLI連接到通過Docker for Windows或您創建的任何其他VM 運行的遠程Docker守護進程

不能完全兼容systemctl, systemd等等,IO速度相對原生Linux也是大打折扣,在編譯和解壓方面可以很深體會到。畢竟不是真正的Linux,而是掛在Windows NT內核之上的仿Linux 系統
image.png

WSL1與Docker 集成

由於WSL 還不是原生的Linux,所以需要借助Docker for Windows來實現Docker(Docker for Windows 是基於Hyper-V 技術)
image.png
image.png

另外一種方式是,在WSL1中安裝docker 客戶端,連接 docker server, 來解決在WSL1上使用docker 的問題。(PS: Win10 的Linux 子系統是裝不了 docker (服務端)的,但是可以安裝客戶端)

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common 
curl -fsSL [https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg](https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg) | sudo apt-key add - 
sudo apt remove gpg 
sudo apt install gnupg1 
sudo apt install software-properties-common
sudo add-apt-repository "deb [arch=amd64] [https://mirrors.aliyun.com/docker-ce/linux/ubuntu](https://mirrors.aliyun.com/docker-ce/linux/ubuntu) $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc

image.png

參考

WSL2

WSL2 是第二代 WSL,包含在2020年5月正式發布 Windows 10 v2004 版中。相比第一代,新的 WSL2 重新設計了架構,使用真正的 Linux 內核,幾乎具有 Linux 的所有完整功能。啟用WSL2的 Linux 系統啟動時間非常快,內存占用很少,並且,WSL 2 還可以直接原生運行 Docker,VS Code 編輯器還有 Remote-WSL 插件,相對於完整的 linux 虛擬機只是不支持 systemctl、systemd,不能直接運行圖形桌面。Windows 也越來越向虛擬平台靠攏,Windows NT 內核和 Linux 內核都是運行在虛擬平台之上的,是平級的

image.png

We will replace the Hyper-V VM we currently use by a WSL 2 integration package. This package will provide the same features as the current Docker Desktop VM: Kubernetes 1-click setup, automatic updates, transparent HTTP proxy configuration, access to the daemon from Windows, transparent bind mounts of Windows files, and more.

image.png

升級到WSL2

如果發現VERSION為1,說明Ubuntu運行在WSL1下,可以升級到 WSL2。同樣,WSL2也可以降級到WSL1。
wsl -l -v #查看已安裝Linux版本和名稱,完整命令格式:wsl --list --verbose
image.png
**WSL2需要Windows build 18917 更新, **WSL不需要. 但是最好首先將操作系統更新到需要的版本, 而不是先安裝WSL再更新
WSL 2 需要更新其內核組件。有關信息,請訪問
https://aka.ms/wsl2kernel

具體步驟參考 : https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

安裝 WSL 2 之前,必須啟用“虛擬機平台”可選功能
image.png
wsl --set-version Ubuntu 2 #升級到WSL2,其中 Ubuntu 是已經安裝的Linux名稱,命令格式:wsl --set-version
image.png

啟用WSL后,通過 \wsl$ 可以訪問WSL文件
image.png

WSL2 與docker 集成

最初的WSL是在Windows之上模擬Linux內核,但是Windows和Linux之間存在如此基本的差異,以至於某些事情不可能以與本機Linux相同的行為實現,這意味着不可能直接在 WSL中運行Docker Engine和Kubernetes
在WSL1中,Docker Desktop通過Hyper-V虛擬機去運行docker環境的
image.png

升級到WSL2 之后, Docker Desktop 可以直接用 WSL2,直接運行在Linux 內核上了
image.png

通過如下設置,Docker Desktop就和WSL2分發版本進行了集成,無需在WSL中安裝docker; 當然,也可以選擇不與Docker Desktop集成,直接在WSL 中運行docker 容器。

image.png

image.png
啟用WSL后,docker運行數據都在WSL發行版中,文件位置都只能由WSL管理

安裝docker后,docker會自動創建2個發行版:

  • docker-desktop
  • docker-desktop-data

image.png
image.png

WSL發行版默認都是安裝在C盤,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運行數據、鏡像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中

通過 WSL 2 集成,您仍然可以體驗到與 Windows 的無縫集成,但在 WSL 中運行的 Linux 程序也可以執行相同的操作。這對於從事面向 Linux 環境的項目或為 Linux 量身定制的構建過程的開發人員產生了巨大影響。不再需要維護 Linux 和 Windows 構建腳本!例如,Docker 的開發人員現在可以在 Windows 上的 Linux Docker 守護程序上工作,使用與 Linux 計算機上的開發人員相同的工具和腳本集:

注:WSL2 Docker最爽的地方是和宿主機Win10共享network,我們在宿主機Win10使用localhost加端口號就可以訪問Docker中對應container中的服務,十分方便
image.png

WSL使用

wsl #啟動
wsl --shutdown #關閉所有正在運行的 Linux 和 WSL 2

啟動 WSL2 之后,會在任務管理器中發現多了一個 虛擬機工作線程
image.png

訪問wsl 文件
image.png

卸載發行版
有時候某個Linux發行版不再使用,或者是環境被搞壞需要重裝,這時候我們可以卸載掉這個Linux發行版。方法如下。

  • 首先使用:wslconfig /l 命令查看系統內安裝的Linux發行版。
  • 然后使用:wslconfig /u <發行版名稱>卸載掉指定的發行版Linux。


免責聲明!

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



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