41

这是我的设置:

  • Windows 10 PRO - build 19041.153- 内幕节目 - 慢响
  • Ubuntu 18.04LTSWSL2 模式下的子系统
  • Docker for desktop 2.2.0.4- 启用 WSL2 与我的 Ubuntu 子系统的集成

我目前被迫使用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.

我已经尝试过的:

  • DOCKER_HOST=localhost:2375使用, DOCKER_HOST=tcp://localhost:2375, DOCKER_HOST=127.0.0.1:2375, DOCKER_HOST=tcp://127.0.0.1:2375=>等 envs 暴露没有 TLS 的守护进程相同的结果
  • 卸载 Docker 桌面并安装以前的版本
  • 关闭win防火墙

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

4

9 回答 9

65

我知道这对于目前的问题可能已经过时,但这应该可以节省我们宝贵的时间,尤其是当 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  中的测试: 祝你好运!!在此处输入图像描述

于 2020-05-06T16:51:52.657 回答
30

如果它对遇到此问题的其他人有所帮助,对我来说,事实证明我的子系统突然(并且“自行”)在 docker 的 RESOURCES > WSL INTEGRATION 设置中关闭。

于 2020-04-23T00:51:17.890 回答
6

我已经按照建议安装了 Docker for Windows,以便将它与WSL 2一起使用,这确实为您启动了 docker 守护程序。但我不需要它提供的所有花哨的功能,所以删除了它,很高兴看到释放了大约 4GB 空间并且系统托盘中没有额外的图标。

现在,如果我需要运行 docker 命令,我只需从以下内容开始:

sudo dockerd &

这样我就可以让它在同一个 shell 的后台运行。请注意,在此示例中,我进行了sudo没有密码的设置。如果需要密码,我可以sudo dockerd打开另一个终端选项卡。

虽然这是一个快速的临时解决方案,但我发现它会导致网络问题,所以我不推荐它,而是更喜欢使用轻型 VM

于 2021-09-29T15:21:49.043 回答
4

在 Docker 桌面应用程序上,我必须手动启用我的发行版集成

Settings > Resources > WSL Integration
于 2021-07-14T14:13:52.227 回答
3

我发现我的问题是由于错误阅读说明造成的。在我的 Windows 版本 1909 和 WSL 2 上通过 CMD 上的以下命令修复:

wsl.exe -l -v
wsl.exe --set-version ${distro-name} ${wsl version}

例子:

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

C:\Users\xxxxx>wsl.exe --set-version Ubuntu-18.04 2
Conversion in progress, this may take a few minutes...
For information on key differences with WSL 2 please visit https://aka.ms/wsl2

而已

于 2020-11-23T13:50:39.703 回答
0

ISSUE: 无法在 tcp://127.0.0.1:2375 连接到 Docker 守护程序

电源外壳

wsl -l -v   # ALL DISPLAY "2"

Linux

unset DOCKER_HOST

/etc/init.d/docker restart

重启 Docker

windows docker restart
windows firewall off

Linux 码头工人进程

docker ps
于 2020-10-11T18:44:28.447 回答
0

不管它值多少钱(这是一个旧线程)。也许其他人仍在拼命试图解决这个难题。

在我的案例中,我刚刚偶然发现了解决方案。我正在运行以下

  • docker 桌面版 3.3.3
  • 华尔街日报 2
  • Fedora 33 我一遍又一遍地遇到这个问题“无法在 unix:///var/run/docker.sock 连接到 Docker 守护进程”。重新安装,重新启动,blablabla。

我的最终错误是对 /var/run/docker.sock 的访问权限,我在我的个人用户 srw-rw 下运行 wsl---- 1 root docker 0 May 7 10:29 /var/run/docker.sock

因此,如果我以 root 身份运行(sudo docker info)或者我将自己放入组“docker”(sudo usermod -aG docker $USER),我一切都很好。请看这里https://docs.docker.com/engine/install/linux-postinstall/

于 2021-05-07T08:39:34.797 回答
0

您可以考虑将您的版本升级到 19582.1000 ,这对我有用。

看到这个问题

在此处输入图像描述

于 2020-03-16T16:04:08.013 回答
0

我已经尝试了很多东西,以及对我有用的东西,但没有人提到要尝试:

(来自 Windows Powershell)

wsl --set-default <my-distro>

然后在那里,我可以在不更改DOCKER_HOSTvar 的情况下连接到 docker。

于 2022-02-28T15:26:15.313 回答