WSL2中的Docker:无法通过tcp:// localhost:2375连接到Docker守护程序。泊坞窗守护程序正在运行吗?

时间:2020-03-30 00:59:12

标签: docker debian windows-subsystem-for-linux wsl-2

我目前正在WSL 2上运行Debian Distro(Microsoft Store的默认版本),并且在其上运行Docker时遇到了很多麻烦。我的操作系统当前是Windows 10 Education Insider Preview,版本2004,操作系统内部版本是19587.1000,并且我具有Docker Desktop。

现在,在这一点上,我已经尝试了一切。我尝试使用“不带TLS的tcp:// localhost:2375上的暴露守护程序”方法,但没有结果。然后,我尝试启用“启用基于WSL 2的实验引擎”(这也是为什么我必须转至Windows 10教育版并获得docker桌面并移至此版本2004的原因)。 我还从我的.bashrc中注释了“ #export DOCKER_HOST = tcp:// localhost:2375”。 然后,由于WSL不支持systemd或systemctl,因此使用它们启动docker是没有用的,因此我尝试了“ sudo服务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?  

我似乎无法弄清楚哪里出了问题... 我到处都在StackOverFlow上查找了教程,论坛和其他问题。 大多数都是关于本机Linux或WSL 1上的Docker,它们使用第一种方法在tcp:// localhost:2375上将守护进程公开而没有TLS,这不是很安全,但是我什至没有在我的上工作。

请帮助!这将不胜感激!! 预先感谢!

2 个答案:

答案 0 :(得分:5)

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

通过在Windows PowerShell中检查 wsl -l -v,确保已将wsl发行版升级到了v2

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

但最终为我解决的问题是覆盖使用WSL1留下的DOCKER_HOST env变量

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

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

您应该可以成功运行docker ps

答案 1 :(得分:2)

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