WSL Docker : Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


在使用 WSL 的 ubuntu-20.04 linux 子系統初學安裝和使用 docker 時遇到了這個問題

我之前從 Microsoft Store 中下載了 ubuntu-20.04 的子系統嘗鮮。

在后期學習 docker 的時候,想把 docker 安裝到 linux 子系統里。

於是使用“菜鳥安裝”的方式,把 docker 安裝到了 WSL 的 linux 里面,即使用了命令:

$ apt-get update
$ wget -qO- https://get.docker.com/ | sh

安裝完成后使用命令檢查,就出現了問題

$ docker version
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:47:17 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

$ _

提示以上錯誤信息,發現 docker 服務根本起不來,只有客戶端是活着的。

去找了很多答案都和我的問題不符,也沒法解決。關鍵點在於我使用了 WSL 的 linux 子系統,情況可能比較特殊。

 

之后,先是找到了 windows 10 對於 WSL 的官方文檔指導 文檔 。

在疑難解答的位置被指引到了另外一篇文章: windows 10 上的如何在適用於 Linux (WSL2)的 Windows 系統中設置 Docker 。

這篇文章作者對比說明了 WSL1 和 WSL2 的一些問題(其實是着重推薦了一波 WSL2)。

在翻閱文章的過程中,又被導引到了 Docker 官方文檔對於 WSL2 的操作說明 Docker Desktop WSL2

官方文檔中說明 docker 目前對 WSL2 的支持已經非常完備了,並且強烈推薦使用 WSL2 來配合 docker 使用,這也是官方推薦的最佳方式。

這時我就想到是不是因為使用“菜鳥安裝”腳本的最新版本 docker 和我的 WSL 版本不匹配造成的。因為我嘗鮮 WSL 子系統比較早,那時候可能用的還不是 WSL2 。

 

於是我根據安裝指南中的操作,對 WSL 執行檢查:

C:> wsl.exe -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 1
docker-desktop-data Running 2
docker-desktop Running 2

結果發現我的 ubuntu20.04 是 WSL1 而不是 WSL2 ,是不是這個問題還不確定,但是我還是決定先升級 WSL2 試試看:

C:> wsl.exe --set-version ubuntu-20.04 2
正在進行轉換,這可能需要幾分鍾時間...
有關與 WSL 2 的主要區別的信息,請訪問 https://aka.ms/wsl2
轉換完成。

升級過后在 Windows Terminal 中重新打開 ubuntu-20.04,再次運行 docker version 檢查,發現仍然有問題。

然后我重新啟動 docker,並檢查 docker 的運行狀態,發現 docker 可以正常啟動了,問題解決。

 

總結:問題原因是 docker 版本和 WSL2 版本都太新,很多人應該還沒有遇到這樣的情況。如果你在 windows 10 1909 之前就嘗鮮過 WSL,

你安裝的 linux 子系統一定是 WSL1 的,那么很有可能你也會遇到這個問題。不妨先用 wsl.exe -l -v 命令檢查一下 WSL 的版本。

WSL2 是在 1909 之后微軟才推出的,所以需要把 WSL1 文件系統升級到 WSL2 即可解決問題。

 

2021年4月15日00點15分 ——codingR

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM