首页 > 解决方案 > WSL2 无法连接到 Docker 守护程序

问题描述

这是我的设置:

我目前被迫使用Windows进行开发,所以我成为了microsoft Insider成员并以WSL2模式安装了ubuntu。Docker 桌面支持 WSL2 的集成,所以我尝试了它......一周以来它完美无缺。今天PC重启后,我无法让docker再次运行。Ubuntu 可以从 Docker 桌面看到注入的二进制文件,但它无法再连接到 Windows 托管的 docker daemon。

当我调用 subsys 终端docker info时,它会返回

$ docker info
Client:
 Debug Mode: false

Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info

或与docker-compose up

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

我已经尝试过的:

我真的,真的需要这个工作。感谢您的任何想法。最奇怪的是它昨天工作,从那时起我没有对系统进行任何更改......

标签: dockerwindows-subsystem-for-linuxdocker-desktopwsl-2docker-daemon

解决方案


我知道这对于目前的问题可能已经过时,但这应该可以节省我们宝贵的时间,尤其是当 Windows 20H1=2004 本月(2020 年 5 月)将投入生产时。

  操作系统版本:Windows 10 教育版(与企业版相同,是专业版的超集)。
  版本:2004
  Build(版本操作系统):19041.264
  其他:Windows 功能体验包 120.2202.130.0。
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  外壳:WSL终端

首先,我之前已经安装了WSL v1,然后执行了升级到WSL v2的过程,并且出现了这个错误:“错误:无法在 tcp://localhost:2375 连接到 Docker 守护进程。docker 守护进程是否正在运行?”。

其次,为了解决这个问题,我按照此处所述的说明进行操作:Link,它起作用了。

第三,经过一些测试,我认为升级中缺少的更改是从 shell 的启动脚本中删除 DOCKER_HOST 变量。

摘要:就我而言,永久修复的程序应遵循以下步骤

  1.测试是否是您取消设置 DOCKER_HOST 变量的情况(见下图)。

  2.如果上一步错误消失,那么是时候修复更改了,删除 shell 启动脚本中 DOCKER_HOST 变量的设置(在我的情况下是$HOME/.bashrc)。
    对此进行了评论:
      #export DOCKER_HOST=tcp://localhost:2375
      #export DOCKER_BUILDKIT=1

      注意:还包括 DOCKER_BUILDKIT。

  3.关闭并打开终端。

步骤 1  中的测试: 祝你好运!!在此处输入图像描述


推荐阅读