WSL2 中的 Docker:无法连接到位于 tcp://localhost:2375 的 Docker 守护程序。 docker 守护进程是 运行 吗?

Docker in WSL2: Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?

我目前正在 运行WSL 2 上安装 Debian 发行版(来自 Microsoft 商店的默认发行版),我在使用 运行 时遇到了很多麻烦Docker就可以了。我的 OS 目前是 Windows 10 Education Insider Preview,版本 2004,os 版本是 19587.1000,我有 Docker Desktop。

现在,在这一点上,我真的已经尝试了所有方法。我试过使用 "Expose daemon on tcp://localhost:2375 without TLS" 方式没有结果。然后,我尝试启用 "Enable the experimental WSL 2 based engine"(这也是我必须转到 Windows 10 教育并获得 docker 桌面并转到此版本 2004 的原因)。 我还从我的 .bashrc 中注释掉了“#export DOCKER_HOST=tcp://localhost:2375”。 然后由于 WSL 不支持 systemd 和 systemctl,开始 docker 使用这些是没有用的,因此我尝试了 "sudo service docker start" 和 "sudo /etc/init.d/docker start"。但是,当我在我的 WSL 中 运行 Docker 中的任何命令时,它仍然给我这个:

$ docker ps -a 
Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?  

我似乎无法弄清楚哪里出了问题... 我在 Whosebug 上到处查看教程、论坛和其他问题。 Most 在 Native Linux 或 WSL 1 上大约 Docker,他们在 tcp://localh[= 上使用 exposing 守护进程的第一种方法38=]t:2375 没有 TLS,这不是很安全,但我什至没有在我的上工作。

请帮忙!这将不胜感激!! 提前致谢!

好的,基本上我安装了一个干净的 WSL。这次我得到了一个干净的 Ubuntu,并以某种方式解决了这个问题。我的其他 WSL 发行版仍然无法使用它,但这个 clean Ubuntu 可以。但是,一旦我在上面安装了一些东西,它又开始损坏了。现在,我重新安装了它,现在它工作正常。似乎有什么可能与此冲突?

https://github.com/docker/for-win/issues/5096

通过检查 windows powershell

中的 wsl -l -v 确保您已将 wsl 发行版升级到 v2

在 docker 设置中,使用基于 WSL 2 的引擎并为您的发行版启用 WSL 集成

但最终为我修复的是覆盖使用 WSL1

遗留下来的 DOCKER_HOST env 变量

export DOCKER_HOST=unix:///var/run/docker.sock

您可以执行此行进行测试,然后将其添加到您的 .bashrc 并确保其未在 .bash_profile.profile

中设置

然后您应该能够 运行 docker ps 成功

我在 Debian 上遇到了类似的问题,这很奇怪,因为我有一个 OpenSUSE 的 运行 实例连接并使用 docker 没有问题。 在我的例子中,报告的错误是 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

两个实例都启用了 WSL2 集成。

最终起作用的是以下内容:

  1. 来自 WSL Debian 和 WSL.exe - unset DOCKER_HOST
  2. 重新启动 Docker...(右键单击任务栏中的 Docker 仪表板图标)
  3. 再次尝试任何 docker 命令或直接 docker ps

有一个选项可以在不使用 TLS 的情况下在 tcp://localhost:2375 上公开守护程序,但是默认情况下它是未选中的,我就这样保留了它。