我希望 WSL 在電腦開機時自啟動並達成原生 Docker 也自啟動
以下是達成 WSL 自啟動 並確保 Docker(原生 dockerd)同時自啟動 的綜合解決方案:
1. 確保 WSL 和 Docker 配置正確
(1) WSL 的 /etc/wsl.conf
配置
在你的 WSL 發行版內,編輯 /etc/wsl.conf
確保 Docker 守護進程會在 WSL 啟動時自動啟動。
執行以下命令:
sudo vim /etc/wsl.conf
新增以下內容:
[boot]
command="sudo dockerd > /dev/null 2>&1 &"
這行指令會在 WSL 啟動時自動執行 dockerd
,並將輸出隱藏。
儲存檔案後,關閉並重啟 WSL:
wsl --shutdown
wsl
2. 設定 WSL 在 Windows 開機時自動啟動
(1) 使用工作排程器
建立新的任務:
設定基本資訊:
- 名稱:設定任務名稱,如「Start WSL」。
- 執行條件:選擇「不論使用者是否登入都執行」。
設定觸發器:
設定動作:
- 動作選擇「啟動程式」。
- 程式或腳本填入:
wsl.exe
- 在「新增參數」中填入:
-d <你的 WSL 發行版名稱>
隱藏執行:
測試排程器設定:
3. 測試是否能成功啟動 Docker
(1) 檢查 dockerd
是否成功啟動
重新啟動電腦,然後進入 WSL,執行:
docker ps
如果 Docker 成功運行,表示配置無誤。
4. 確保 Docker 使用者不需要每次輸入密碼
執行 Docker 守護進程需要 sudo
權限,但可以透過以下方法讓指定的使用者啟動 Docker 時不需要密碼:
編輯 sudoers 文件:
新增免密碼規則:
保存並退出。
這樣可以讓 sudo dockerd
在啟動時不需要手動輸入密碼。
5. (可選)隱藏 Docker 啟動的輸出
如果你希望完全隱藏 dockerd
的日誌輸出,可以使用以下方式:
修改 /etc/wsl.conf
:
測試效果:
- 重啟 WSL,檢查是否正常啟動,且沒有多餘的日誌輸出。
6. (可選)使用 NSSM 進一步提升穩定性
如果希望 Docker 完全作為 Windows 系統服務運行,建議使用 NSSM 配合 Docker。
下載 NSSM:
新增服務:
設定開機啟動:
結論
完成上述步驟後,WSL 在開機時會自動啟動,並運行 Docker 守護進程。你可以透過任務排程器的方式實現背景啟動,並配合 /etc/wsl.conf
確保 Docker 在 WSL 啟動後立即運行。