WSL Containers 拆解:Windows 11 而家可以棄用 Docker Desktop 嗎?
3C 產品

WSL Containers 拆解:Windows 11 而家可以棄用 Docker Desktop 嗎?

圖片:via XDA Developers — https://www.xda-developers.com/windows-11-can-now-run-linux-containers-without-docker-tested/
TechLab 編輯部(譯)·

指令似 Docker、底層另有一套 session,Compose 仍然係最大缺口

Microsoft 喺 WSL 2.9.3 pre-release 加入 WSL Containers,Windows 11 開發者更新 WSL 後,就會多一個 wslc.exe。佢可以拉 image、build Dockerfile、開 container、映射 port、睇 logs 同限制 CPU、RAM,基本動作同 Docker CLI 好接近。XDA 呢次試用帶出一個幾實際嘅問題:既然 Windows 本身已經做到,Docker Desktop 仲係咪必裝?

答案要先分清楚三樣嘢。Docker Desktop 係一套 Windows app、管理介面同開發工具;Docker Engine 係背後負責 container 嘅 engine;container image 同 registry 生態又係另一層。WSL Containers 主要搶緊第一樣嘢嘅位置,唔代表 Docker image、Dockerfile 同成個 OCI 生態突然冇用。呢個分別好重要,否則一句「Windows 取代 Docker」會講大咗好多。

wslc 點樣運作

wslc 會按需要建立一個 WSL-backed session,由呢個獨立 host 管理 image、network、volume 同 container。預設 session 有自己嘅儲存位置,Microsoft 喺 2.9.3 release notes 列出預設 32GB session storage;開發者亦可以經 API 建立其他 session。隔離邊界主要跟 session 走,所以唔好理解成每開一個 container,就必定完整啟動一部新 VM。

呢套設計同平時開 Ubuntu、Debian 嗰啲 WSL distro 分開,Windows app 亦可以用 C、C++ 或 C# API 直接控制 Linux container。呢點其實幾有意思:公司內部工具可以將 Linux 元件包入 Windows app 嘅 build 流程,又可以用 GPO、registry allowlist 同日後嘅 Intune 支援統一管理,唔使每個開發者自行維護一套 Linux daemon 設定。

Windows Terminal 入面示範用 wslc 指令啟動同管理 Linux container

圖片:Microsoft

操作似 Docker,相容性就未去到即換即用

安裝流程算短,PowerShell 跑 wsl --update --pre-release,之後用 wslc run --rm hello-world 就可以驗證。wslc run -d -p 8080:80 nginx 呢類指令,慣用 Docker 嘅人基本上唔使重新學。官方亦支援 image pull、push、build、volume、network、GPU CDI、stats 同資源上限,單一 web server、資料庫或者 AI container 已經有幾完整嘅基本功。

不過 CLI 長得似,唔等於所有 Docker workflow 都相容。而家官方功能表冇內置 Docker Compose,現成 compose.yml 專案未能直接靠一個 up 指令完整搬過去。多服務專案常見嘅 database、cache、queue 同 app,要逐個 container 設 network、volume、環境變數同啟動次序,工作量會即刻多好多。社群已經開始整 Compose 類工具,反過來亦說明官方呢個缺口幾影響日常開發。

Docker Desktop 贏喺成套工具已經磨順

Docker Desktop 除咗跑 container,仲有 GUI、Compose、image 及漏洞資訊、container filesystem 瀏覽、logs、stats、Kubernetes 同一大堆 IDE、測試框架整合。WSL Containers 個命令列已經覆蓋核心操作,但周邊仲係 preview:VS Code Dev Containers 要用 pre-release 版本,再將 Docker Path 改成 wslc;Microsoft Defender for Endpoint 嘅 container 事件支援亦只去到 private preview。

所以公司專案要測嘅,唔止係 wslc run nginx 開唔開到。公司 registry、proxy、VPN、憑證、bind mount、檔案權限、Testcontainers、CI script 同 IDE extension,任何一項假設咗 Docker API 或 Docker socket,都可能要改。想搬現有大型專案,最好先用實際 repository 做一次完整 build、debug 同測試循環,單靠成功啟動 image 仲未夠。

資源佔用未有足夠證據話一定贏

WSL Containers 少咗 Docker Desktop 個 GUI 同部分常駐服務,理論上有機會慳返啲 idle CPU 同 RAM。不過 container 仍然要靠 Linux kernel、utility VM、networking 同儲存層運作,唔會因為個指令變成 wslc 就接近零 overhead。官方亦冇提供一套涵蓋 cold start、build、I/O 同多 container 負載嘅對照 benchmark,所以暫時唔適合直接話佢一定輕過 Docker Desktop。

Microsoft 為 wslc 預設用 virtiofs,官方聲稱存取 Windows 檔案可快兩倍,又加入 Consomme networking 同改良 memory reclaim。不過 Consomme 本身仍屬 experimental,VPN、proxy 同特殊網絡環境仍要逐個試。Docker Desktop 呢邊亦有 Resource Saver 同 WSL autoMemoryReclaim,所以實際差距會受設定、專案擺喺 Windows 定 Linux filesystem,同 container 數量影響。

而家值唔值得轉

只係間中開一個 Linux image、測 API、跑本地資料庫,或者想由 PowerShell 直接控制 container,wslc 已經值得裝喺測試機玩。如果開發 Windows app 時想經 API 呼叫 Linux 工作負載,呢條亦係 Docker Desktop 未有完全對應嘅新路線。Microsoft 暫定 2026 年秋季正式推出,未來幾個 WSL 更新值得留意。

至於每日靠 Compose、多個 Dev Containers、Kubernetes、企業 proxy 或成熟 GUI 開工嗰班,暫時繼續用 Docker Desktop 會穩陣好多;已經喺 WSL distro 自行跑 Docker Engine 或 Podman 嘅人,轉用後所得亦未必多。現階段最合理係揀一兩個非關鍵專案驗證,等 Compose、IDE 整合同 stable WSL 版本齊備,再決定使唔使全面搬。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook