Contents

更新 WSL 後無法順利打開 Docker Desktop 解決方法

最近為了跑 CUDA Docker 服務,把 WSL 更新到新版,結果 Docker Desktop 直接打不開。

其實我平常不太敢亂升級,怕的就是這種「看起來只是更新,實際上整個開發流程卡住」的狀況。這次查了很久,最後找到一個看似不相關、但真的有效的修復方式,順手記錄下來,避免下次再踩一次。

問題現象

  • 更新 WSL 後,Docker Desktop 無法正常啟動
  • 錯誤訊息提到無法掛載 C:\Program Files\WSL\system.vhd
  • 重新啟動電腦與 Docker Desktop 都無法解決

參考討論串:
WSL after upgraded to version: 2.5.9.0, got issue of “Failed to attach disk ‘C:\Program Files\WSL\system.vhd” · Issue #13132 · microsoft/WSL

原始回報重點如下:

1
2
3
4
5
6
7
The upgrade on my device resulted in 2 VHD files which went missing from disk.
The following steps were executed to resolve the issue:

1. Downloaded current release installer wsl.2.5.9.0.x64.msi
2. Extracted files and manually copied:
	- system.vhd -> C:\Program Files\WSL\system.vhd
	- modules.vhd -> C:\Program Files\WSL\tools\modules.vhd

解決方法

我這邊實測可行的作法是:

  1. 到 WSL Releases 下載對應版本的 MSI(例如 wsl.2.7.8.0.x64.msi
  2. 使用 msiexec 解出安裝檔內容
  3. system.vhd 複製到 C:\Program Files\WSL\system.vhd
  4. 重新啟動 Docker Desktop

msiexec 指令如下:

1
msiexec /a wsl.2.7.8.0.x64.msi /qb TARGETDIR="C:\Users\steve\Downloads\extracted"

補充說明

  • 如果你的錯誤同時提到 modules.vhd,也要一起補到 C:\Program Files\WSL\tools\modules.vhd,我那個路徑是有這個檔案
  • 複製到 Program Files 需要系統管理員權限
  • 建議使用「與目前安裝相同版本」的 MSI 檔案進行修復
小提示
更新 WSL 前可以先保留目前可用版本的安裝檔,真的出問題時修復速度會快很多。

小結

這次問題的根因看起來是更新後 VHD 檔案遺失,導致 Docker Desktop 無法順利啟動。雖然手動補檔案這個動作一開始看起來很奇怪,但實際上很有效。

後續我也會評估把 Docker 直接裝在 WSL 內部來使用,減少對 Docker Desktop 的依賴,看看整體穩定性會不會更好。