在 Windows 上使用 WSL 2 安裝 Linux
TLDR
- WSL 2 提供完整的 Linux 內核,並能與 Windows 檔案系統無縫整合。
- 安裝 WSL 2 建議使用
wsl --install指令,並務必將預設版本設定為 2。 - Docker Desktop 整合 WSL 2 可大幅提升資源分配效率與冷啟動速度。
- Windows 與 Linux 檔案系統可透過
\\wsl$(Windows 存取 Linux)與/mnt/(Linux 存取 Windows)路徑互相存取。 - 若在 Linux 環境執行 Docker 指令遇到
permission denied,通常是因為使用者權限不足,需確認 Docker 群組權限。 - 切換至 Windows Container 模式後,WSL 2 內的 Docker 服務不會自動啟動,需手動處理或設定自動啟動腳本。
WSL 2 安裝與設定
WSL 2 (Windows Subsystem for Linux 2) 是 Microsoft 提供的 Linux 子系統,具備完整 Linux 內核,適用於 Windows 10 (2004 版或更新) 與 Windows 11。
安裝步驟
在 Windows PowerShell (系統管理員身分) 執行以下指令:
- 安裝 WSL 2:bash
wsl --install - 將 WSL 2 設定為預設版本:bash
wsl --set-default-version 2 - 設定特定發行版的 WSL 版本為 2:bash
wsl --set-version <DistributionName> 2
TIP
- 可使用
wsl --list --online查詢可安裝的發行版。 - 安裝 Docker Desktop 時,若勾選「Install required components for WSL 2」,系統會自動建立
docker-desktop與docker-desktop-data兩個發行版。
Linux Containers 與 WSL 2 整合
將 Docker Desktop 的 Linux Containers 整合至 WSL 2 可獲得以下優勢:
- 透過動態記憶體分配功能,顯著降低資源消耗。
- 縮短 Docker 守護程式 (Daemon) 的冷啟動時間。
設定方式:
- 開啟 Docker Desktop Settings > General,勾選
Use the WSL 2 based engine。 - 在 Settings > Resources > WSL Integration 中,啟用
Enable integration with my default WSL distro,並在下方清單中勾選需要整合的 Linux 發行版。
同時運行 Windows 與 Linux Containers
由於 Docker Desktop 同時間只能運行一種模式,若需同時運行 Windows 與 Linux 容器,建議將 Docker Desktop 切換至 Windows Containers 模式,並在 WSL 2 的 Linux 發行版中安裝 Docker Engine 來運行 Linux 容器。
權限問題排除
什麼情況下會遇到:在 Linux 環境中執行 docker-compose up 或其他 Docker 指令時,出現 permission denied 錯誤。
解決方案: 此錯誤通常是因為當前使用者未加入 docker 群組。請確保使用者已正確設定權限,或參考 Docker 官方文件更新 Linux 上的 Docker Engine 版本。
檔案系統存取與權限
WSL 2 提供了跨系統存取檔案的便捷路徑:
- Windows 存取 Linux:在檔案總管路徑列輸入
\\wsl$\<DistributionName>。 - Linux 存取 Windows:透過
/mnt/<WindowsDriveLetter>路徑存取 Windows 硬碟。
WARNING
在 Linux 存取 Windows 檔案時,權限會根據 Windows 檔案屬性或 Linux 新增的中繼資料計算。若遇到檔案存取權限問題,可透過調整 umask、fmask 與 dmask 進行設定。
常見問題與限制
1. Windows Container 模式下的 Docker 自動啟動
什麼情況下會遇到:將 Docker Desktop 切換至 Windows Container 模式後,重啟電腦時 WSL 2 內的 Docker 服務不會自動啟動。
- 建議做法:需透過
boot設定或編寫自動啟動腳本,在 WSL 2 啟動時自動執行 Docker 服務。
2. 網路芳鄰存取限制
什麼情況下會遇到:使用舊版安裝方式或特定網路環境下,Windows 檔案總管無法透過網路芳鄰異動 Linux 檔案。
- 建議做法:建議將關鍵資料集中存放在 Linux 的用戶資料夾(如
/home/<username>/)內,以避免跨系統檔案權限與存取異常。
異動歷程
- 2022-10-24 初版文件建立。
- 2024-10-30
- 將簡寫指令改為完整指令。
- 補充解除安裝 WSL 的指令。
- 嘗試提供之前問題的解決方案。
- 2026-01-22
- 修正設定預設 Linux 發行版的指令。
