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

docker 启动命令

1. 启动docker
systemctl start docker

2. 关闭docker
systemctl stop docker

3. 重启docker
systemctl restart docker

4. 查看docker运行状态
systemctl status docker

5.设置docker开机自启动

systemctl enable docker

假如启动docker命令,接着查看docker运行状态为not runing,宝塔docker服务点击开启,不能正常开启,就考虑一下运行环境扒~

在使用 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:      trueCannot 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 即可解决问题。
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值