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 即可解决问题。
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
当出现"Docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the Docker daemon running?"错误消息时,这意味着Docker守护进程未运行或无法访问。Docker守护进程是Docker引擎的核心组件,负责管理和运行容器。 以下是解决此问题的几种方法: 1. 确保Docker守护进程正在运行。可以使用以下命令检查Docker守护进程的状态: ```shell sudo systemctl status docker ``` 如果守护进程未运行,可以使用以下命令启动它: ```shell sudo systemctl start docker ``` 2. 确保当前用户具有访问Docker守护进程的权限。默认情况下,只有root用户和docker组的成员才能访问Docker守护进程。您可以将当前用户添加到docker组中,以便具有访问权限: ```shell sudo usermod -aG docker $USER ``` 请注意,此更改将在下次登录后生效。 3. 如果您正在使用WSL2(Windows Subsystem for Linux 2),还需要确保WSL2与Docker守护进程正确通信。可以尝试以下步骤: a. 在Windows主机上,打开Docker Desktop设置。 b. 转到“Settings” > “General”。 c. 确保选中了“Expose daemon on tcp://localhost:2375 without TLS”选项。 d. 保存更改并重新启动Docker Desktop。 e. 在WSL2终端中,设置DOCKER_HOST环境变量: ```shell export DOCKER_HOST=tcp://localhost:2375 ``` 这将使WSL2与Docker守护进程进行通信。 请注意,这些方法中的某些方法可能需要管理员权限或重新启动系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值