筆記目錄

Skip to content

在 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-desktopdocker-desktop-data 兩個發行版。

Linux Containers 與 WSL 2 整合

將 Docker Desktop 的 Linux Containers 整合至 WSL 2 可獲得以下優勢:

  • 透過動態記憶體分配功能,顯著降低資源消耗。
  • 縮短 Docker 守護程式 (Daemon) 的冷啟動時間。

設定方式:

  1. 開啟 Docker Desktop Settings > General,勾選 Use the WSL 2 based engine
  2. 在 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 新增的中繼資料計算。若遇到檔案存取權限問題,可透過調整 umaskfmaskdmask 進行設定。

常見問題與限制

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 發行版的指令。