🐳 解決 Docker Desktop 無法連線錯誤:connect ENOENT \.\pipe\dockerDesktopEngine

 

🧠 前言:什麼是 connect ENOENT?

當你在 Windows 上開發 .NET Core 或其他應用程式,使用 Docker Desktop 打包時,可能會遇到以下錯誤:

connect ENOENT \\.\pipe\dockerDesktopEngine


這代表 你的電腦無法連接 Docker Engine 背後的服務(Daemon)。簡單來說,Docker 沒有啟動,或是你目前的 Docker 使用方式不對。



🧪 錯誤重現場景

你可能在執行以下指令時發生錯誤:

docker build -t net_app .

系統回傳錯誤訊息:

ERROR: error during connect: Head "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/_ping": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.


🧯 常見原因

  1. Docker Desktop 沒有啟動或已閃退。

  2. 使用了錯誤的 Docker 容器模式(如 Windows 容器 vs Linux 容器)。

  3. Windows 的 Docker 引擎服務(daemon)沒有啟動。

  4. WSL2 被關閉或設定錯誤。

  5. 防毒軟體或防火牆阻擋 Docker 的內部連線。



🛠 解決方法(完整步驟)

✅ 1. 重新啟動 Docker Desktop

  1. 點選右下角的 Docker 圖示 > Quit Docker Desktop。

  2. 重新用管理員身份開啟 Docker Desktop。

  3. 打開 PowerShell 測試:

    docker version
    



✅ 2. 確認 Docker 服務狀態      

Get-Service docker

        若狀態為 Stopped,請啟動:    

Start-Service docker


✅ 3. 重置 Docker 為出廠設定

  1. 開啟 Docker Desktop。

  2. 進入:⚙️ Settings → Troubleshoot → Reset to factory defaults

  3. 確認並重新啟動電腦。



✅ 4. 確保使用 WSL2 模式

Docker Desktop 支援 Windows 的 WSL2 子系統。

檢查是否已啟用:

wsl --list --verbose

若沒有看到 docker-desktop,執行:

wsl --shutdown
wsl --set-default-version 2



✅ 5. 手動啟動 Docker Daemon(進階)

若仍無法啟動,可以手動執行 Docker 程序:

start "C:\Program Files\Docker\Docker\Docker Desktop.exe"



✅ 6. 測試是否成功

docker version
docker ps


能成功列出版本與容器清單即表示問題解決。


🔎 額外說明:Docker 管道連線是什麼?

錯誤訊息中的 \\.\pipe\dockerDesktopEngineWindows Named Pipe 的一種通訊方式,Docker 用它讓前端 CLI 工具與後台服務(Daemon)互相溝通。

當這條連線壞掉,就好像電話線被剪斷一樣 —— 你說什麼 Docker 都聽不到,自然就回錯誤訊息。



📚 總結

問題 解法
Docker Desktop 無法連線 重新啟動 Docker / Windows 服務
出現 ENOENT 錯誤 確認 WSL2 與 Docker 引擎啟動
仍有問題 Reset Docker 設定 + 檢查 WSL




👨‍💻 結語

這篇教學不只適合工程師,也適合剛接觸 Docker 的新手開發者。遇到錯誤別怕,一步一步照著解,就能快速恢復你的開發環境!

留言

這個網誌中的熱門文章

🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題

🛠【實戰排除教學】從 VS Code 的 _logger 錯誤,到 PowerShell 找不到 npm/serve,再到 Oracle ORA-03135 連線中斷——一次搞懂!

🔎如何在 Oracle PL/SQL 儲存過程中為文字欄位加入換行符號(CHR(10))——以 Updlcmremark 為例