微軟最新推出的 WSL 2 在架構方面發生了重大的變化:它提供了一個在輕量級 VM 中執行的真正 Linux 核心。
使用真正的 Linux 核心意味著可以在 Windows 上執行 ELF64 Linux 二進位制檔案。對 Docker 來說絕對是利好訊息,因為這意味著 Linux 版本的 Docker 可以直接在 WSL 2 中執行。
不過 Docker 的標的並不止於此,對於這個變化以及這項技術,Docker 公司已將其應用到自家的產品上,併在近日宣佈目前正在開發針對 WSL 2 的新版 Docker Desktop,計劃於7月釋出公開預覽版。它將使 Docker 的開發體驗體驗更友好、以及解鎖更多新功能。
Docker 表示微軟在 WSL 2 中採取的架構方案和他們對 LinuxKit 和 Hyper-V 的使用方法非常類似,更重要的是,使用真正 Linux 內核的 WSL 2 與 Windows 整合更緊密。
據 Docker 公司的介紹,微軟很早就為他們提供了 WSL 2 的早期版本,以便他們評估這項技術,並瞭解如何和 Docker Desktop for Windows 結合,使它成為在 Windows 上使用 Docker 的最佳方案。
經過測試後,Docker 守護程式在 WSL 2 中執行良好,效能表現也不俗,冷啟動時間僅需要大約 2 秒。
Docker 也表示將使用 WSL 2 的整合包來替代 Hyper-V VM,該軟體包將提供與當前 Docker Desktop VM 相同的功能:一鍵設定 Kubernetes、自動更新、透明的 HTTP 代理配置、從 Windows 訪問守護程式以及透明系結 Windows 檔案等等。
此整合包將包含執行 Docker 和 Kubernetes 所需的伺服器端元件,以及用於和 WSL 中的這些元件互動的 CLI 工具。最終,Docker Desktop 將會引入一項新功能:Linux 工作區(Linux workspaces)。
現在我們使用 Docker Desktop 時,執行守護程式的 VM 完全不透明:雖然我們可以從 Windows 與 Docker 和 Kubernetes API 進行互動,但除了 Docker 容器或 Kubernetes Pod 之外,無法在 VM 中執行任何內容。
但透過整合 WSL 2,可以體驗與 Windows 的無縫整合,這對於開髮針對 Linux 環境的專案的開發者或者針對 Linux 定製的構建過程具有巨大的影響 —— 意味著開發者無需再維護用於 Linux 和 Windows 兩套不同的構建指令碼了。
例如,Docker 的開發者現在可以在 Windows 上執行 Linux Docker 守護程式,使用與 Linux 開發者相同的工具和指令碼集:
至於效能方面的問題,為了讓 WSL 2 有更好的使用體驗,微軟在效能和資源分配方面付出了巨大的努力:將 VM 設定為使用動態分配記憶體的方式,並且可以在所有可用的主機 CPU 上進行任務排程,另外,在主機提供的範圍內,消耗所需的最低記憶體。
Docker Desktop 將利用 WSL 2 的這些特性來大幅改進其資源消耗量,它將根據需要使用盡可能少的 CPU 和記憶體,並且構建容器等 CPU/記憶體密集型任務將比現在快得多。
得益於和微軟的合作,Docker Desktop for WSL 2 將於 7 月釋出技術預覽版,支援與當前版本的 Docker Desktop 同時執行。
朋友會在“發現-看一看”看到你“在看”的內容