【问题标题】:Docker in WSL2: Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?WSL2 中的 Docker:无法在 tcp://localhost:2375 连接到 Docker 守护程序。 docker 守护进程是否正在运行?
【发布时间】:2020-07-10 08:35:52
【问题描述】:

我目前正在 WSL 2 上运行 Debian Distro(Microsoft Store 中的默认发行版),但在其上运行 Docker 时遇到了很多麻烦。我的操作系统目前是 Windows 10 Education Insider Preview,版本 2004,操作系统版本是 19587.1000,我有 Docker 桌面。

现在,在这一点上,我已经尝试了一切。我尝试使用“在没有 TLS 的情况下在 tcp://localhost:2375 上公开守护程序”的方式没有结果。然后,我尝试启用“启用基于实验性 WSL 2 的引擎”(这也是我必须迁移到 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?  

我似乎无法弄清楚什么是错的...... 我在 StackOverFlow 上到处查找教程、论坛和其他问题。 大多数都是关于 Native Linux 上的 Docker 或 WSL 1 上的,他们使用第一种方法在没有 TLS 的情况下在 tcp://localhost:2375 上公开守护程序,这不是很安全,但我什至没有在我的工作中使用它。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 使用 WSL2,我认为您不需要检查“在没有 TLS 的情况下在 tcp://localhost:2375 上公开守护程序”。我说的对吗?
    • 是的,如果你有 docker hub,你现在只需要打开这个功能。
    【解决方案2】:

    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

    【讨论】:

      【解决方案3】:

      我在 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 上公开守护进程,但是默认情况下它是未选中的,我就这样离开了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-21
        • 2020-02-17
        • 2021-12-26
        • 2019-04-17
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多