WSL2无法连接到Docker守护程序

时间:2020-03-16 14:55:49

标签: docker windows-subsystem-for-linux docker-desktop wsl-2 docker-daemon

这是我的设置:

  • Windows 10 PRO - build 19041.153-内部程序-慢速响铃
  • Ubuntu 18.04LTS子系统处于WSL2模式
  • Docker for desktop 2.2.0.4-启用了与我的Ubuntu子系统的WSL2集成

我目前被迫使用Windows进行开发,因此我成为了Microsoft内部成员,并以WSL2模式安装了ubuntu。 Docker桌面支持WSL2的集成,因此我尝试了它。在一周的时间里,它完美无缺地工作了。今天,在PC重新启动后,我无法让docker重新运行。 Ubuntu可以从D​​ocker桌面看到注入的二进制文件,但是它不再能够连接到Windows托管的Docker守护程序。

当我在子系统终端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:2375DOCKER_HOST=tcp://localhost:2375DOCKER_HOST=127.0.0.1:2375DOCKER_HOST=tcp://127.0.0.1:2375 =>相同的env暴露不带TLS的守护程序
  • 卸载Docker桌面并安装以前的版本
  • 关闭Win防火墙

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

7 个答案:

答案 0 :(得分:34)

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

操作系统版本:Windows 10教育版(与企业版相同,并且是Pro的超集)。
版本:2004年
内部版本(版本OS):19041.264
其他:Windows Feature Experience Pack 120.2202.130.0。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Shell :WSL终端

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

第二,为了解决这个问题,我按照此处Link的说明进行了操作,

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

摘要:就我而言,永久修复程序应遵循 STEP

1。。测试是否需要取消DOCKER_HOST变量(见下图)。

2。。如果错误在上一步中消失了,那么该修复补丁了,请删除外壳程序启动脚本中的DOCKER_HOST变量设置(在我的情况下是 $ HOME / .bashrc ) 。
发表评论:
#export DOCKER_HOST=tcp://localhost:2375
#export DOCKER_BUILDKIT=1

注意:还包括DOCKER_BUILDKIT。

3。。关闭并打开终端。

步骤1 中进行测试: enter image description here

祝你好运!

答案 1 :(得分:8)

如果它可以帮助遇到此问题的其他任何人,对我而言,事实证明,我的子系统在docker的资源> WSL集成设置中突然(并且“独立”)被选中。

答案 2 :(得分:0)

您可以考虑将您的版本升级到19582.1000,这对我来说是正常的。

请参见enter image description here

here

答案 3 :(得分:0)

我发现我的问题是由于阅读说明错误所致。该问题已在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

就这样

答案 4 :(得分:0)

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

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

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

我的最终错误是对 /var/run/docker.sock 的访问权限,我在我的个人用户下运行 wsl srw-rw---- 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/

答案 5 :(得分:0)

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

Settings > Resources > WSL Integration

答案 6 :(得分:-2)

问题:无法通过tcp://127.0.0.1:2375连接到Docker守护程序

Powershell

wsl -l -v   # ALL DISPLAY "2"

Linux

unset DOCKER_HOST

/etc/init.d/docker restart

重新启动Docker

windows docker restart
windows firewall off

Linux docker进程

docker ps
相关问题