當您看到錯誤訊息“Docker守護程式無法連線到'unix:///var/run/docker.sock'這通常意味著像 `docker run` 或 `docker ps` 這樣的指令將無法運作。因此,您將無法與 Docker 容器進行互動。出現此錯誤的原因是 Docker 用戶端無法連線到 Docker 守護進程,而 Docker 守護程式是處理電腦上所有 Docker 操作的底層程式。

Docker 連線錯誤

出現此問題的最常見原因是 Docker 服務未在您的系統上執行。其他可能的原因包括:沒有存取 Docker 套接字的必要權限、Docker 安裝方式有問題,或 `docker.sock` 檔案本身有問題。

既然你已經了解了可能的原因,接下來讓我們來看一些實際的解決方案。

1. 使用 systemctl 啟動 Docker 服務

首先要檢查的是 Docker 是否正在執行。 `systemctl` 工具可以啟動和管理系統服務。如果 Docker 沒有運行,Docker 用戶端就無法與主 Docker 進程通信,從而導致此錯誤。執行指令 `systemctl start docker` 將啟動 Docker 服務,如果 Docker 服務只是處於非活動狀態,則應該可以解決問題。

  1. 打開終端 首先,執行以下命令 取消隱藏 泊塢窗:
    sudo systemctl unmask docker

    如果 Docker 處於遮罩狀態,嘗試啟動它,將會看到錯誤「Failed to start docker.service: Unit is masked」。遮罩是一種更強大的停止服務的方法-它能完全阻止服務啟動。如果您想查看系統上所有單元檔案的狀態,請使用[方法/工具名稱]。 systemctl 列出單元文件.

  2. 一旦 Docker 成為 未隱藏, 你可以 啟動 Docker 守護程式 使用此命令,Docker 守護程序(後端服務)將管理映像和容器並處理 Docker API 請求。
    sudo systemctl start docker

    啟動 Docker 服務

  3. ـ 檢查 Docker 是否正常運作輸入此命令。它將顯示 Docker 服務的目前狀態:
    sudo systemctl status docker

    Docker 服務狀態

  4. 如上圖所示,您現在應該可以看到 Docker 已啟動並正常運行.

2. 清除「Docker pull failed」錯誤並啟動 Docker 服務

有時,Docker 拉取失敗可能會留下不完整的文件,導致 Docker 守護程式無法正常啟動。刪除這些殘留檔案可以讓 Docker 重新啟動。之後重新啟動 Docker 服務有助於解決卡住或損壞的檔案引起的任何問題。

  1. 打開 外圍 請輸入以下命令:
    sudo systemctl unmask docker.service sudo systemctl unmask docker.socket sudo systemctl start docker.service

啟動 Docker 服務

如果運行這些命令後錯誤仍然存在,您應該 刪除 目錄中剩餘的文件 貨櫃然後嘗試再次啟動 Docker。 Containerd(在 Docker 1.11 版本中整合)可以協助直接從後台管理 Docker 容器。

  • 保持在終端機視窗中並運行以下命令——請注意,您需要… root 使用者密碼:
    sudo su service docker stop cd /var/run/docker/libcontainerd rm -rf containerd/* rm -f docker-containerd.pid service docker start

重新啟動 Docker 服務

3. 直接啟動 Dockerd(Docker 守護程式)服務

Dockerd 是一個在背景執行並處理所有 Docker 任務的主程式(隱藏程式)。在某些情況下,直接啟動 Dockerd 會有幫助,尤其是在使用 `systemctl` 命令在您的系統上不起作用時。

  1. 打開 終端 使用以下命令直接啟動 Docker 守護程式:
    sudo dockerd

啟動 Docker

4. 使用 Service 指令啟動 Docker

手動啟動 Docker 可以確保服務正常運作。您可以使用命令 `sudo service docker start` 來啟動 Docker,這在系統重新啟動後 Docker 沒有自動啟動時非常有用。

  1. 打開終端機並運作:
    sudo service --status-all sudo service docker start

啟動 Docker 服務

5. 使用 Snap 啟動 Docker 服務

如果您使用 Snap 安裝了 Docker,則需要確保 Snap 管理的 Docker 服務正常運作。 Snap 有時需要您手動啟動或連接服務。請使用 `sudo snap start docker` 指令驗證 Docker 守護程式是否如預期運作。

  1. 打開終端機並執行以下命令 啟動 Docker:
    sudo snap start docker

    啟動 Docker

  2. 若要使用 Snap 檢查 Docker 是否已正確啟動,請使用:
    sudo snap services
  3. 這將導致 列出所有目前正在運作的 Snap 服務:
    Snap 服務
  4. 如果 Docker 尚未啟動,請嘗試 連接 docker:home 插件它並非總是自動連線。然後重啟 Docker。
  5. 打開終端機並執行以下命令:
    sudo snap connect docker:home :home sudo snap start docker

    啟動 Docker

6. 為沒有 root 權限的使用者啟動 Docker

如果您沒有足夠的權限存取“unix:///var/run/docker.sock”,也可能出現此錯誤。您可以暫時透過匯出 Docker 主機變數來繞過此問題,從而使用連接埠 2375 上的本機網路介面。

  1. 打開終端機並運作:
    export DOCKER_HOST=tcp://localhost:2375

    Docker 主機匯出

7. 重新安裝 Docker

有時,Docker 安裝過程中出現的問題(例如檔案損壞或設定錯誤)會導致 Docker 守護程式無法正常運作。重新安裝 Docker 會將所有設定恢復到預設狀態,並可以修復錯誤或衝突的設定所引起的問題。

  1. 重新安裝 Docker 後,請使用以下命令驗證服務是否正在執行:
    sudo service docker start

    這將啟動 Docker,並且通常可以修復程式未啟動時出現的問題,尤其是在電腦重新啟動後或 Docker 無法自動啟動時。

  2. 由於 Docker 守護程式控制所有容器和映像,請確保它正在運行可以恢復 Docker 用戶端和守護程式之間的連接,從而修復由服務中斷或不活動引起的錯誤。