【问题标题】:Docker-compose can't connect to jupyter notebook on WSLDocker-compose 无法连接到 WSL 上的 jupyter notebook
【发布时间】:2021-01-19 01:02:54
【问题描述】:

我使用 jupyter notebook 在我的 WSL 上运行 docker-compose,它提供了以下信息:

[I 00:28:20.921 NotebookApp] Jupyter Notebook 6.1.3 is running at:
[I 00:28:20.921 NotebookApp] http://docker-desktop:3000/?token=...
[I 00:28:20.921 NotebookApp] or http://127.0.0.1:3000/?token=...
[I 00:28:20.921 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

由于 docker 在 WSL 上运行,我无法通过 Windows 机器上的 localhost 访问它。我查了网卡的ip 172.23.16.1 并尝试通过172.23.16.1:3000 访问笔记本,但收到错误连接被拒绝。

我还在我的 windows 机器上打开了传入和传出端口 3000

我错过了什么?

【问题讨论】:

    标签: docker windows-subsystem-for-linux


    【解决方案1】:
    • 您是否映射了您的容器端口以便主机可以访问?

    • 另一个常见问题是:默认情况下,jupiter notebook 将只允许来自localhost 的流量(注意这个localhost 是容器本身),因此您无法从容器外的任何地方访问。因此,要解决此问题,请确保启动 jupiter notebook 并允许来自所有 IP 的流量:

    jupyter notebook --ip 0.0.0.0
    

    【讨论】:

    • 您可能需要both 这和我的回答中的一种解决方法。我不知道 Jupyter 默认只绑定到 localhost,但是即使 Jupyter 正在监听所有地址,它仍然不会在没有额外努力的情况下获得 Docker 和 WSL2 之间的流量。
    • 所以我在 docker compose 文件中通过输入 3000:3000 将容器端口映射到主机端口。我还检查了 jupyter notebook 中的 docker 文件,但 ip 已经设置为 0.0.0.0 并且传入连接到 *.我还执行了 WSL2 桥解决方法中建议的操作 - 我仍然无法在我的 Windows 机器上连接到 localhost:3000 或 WSL 中的 ip,也无法连接到我的 Windows 机器中 WSL 适配器的 ip
    【解决方案2】:

    长话短说,您几乎肯定会遇到thisthisthis 等问题中记录的相同问题。最后一个最相似,因为它是关于从 Docker 容器访问 WSL2 实例,但它们都是相同的根本原因。从其中之一引用我的答案(稍作修改):

    这里的核心问题是 WSL2 在具有自己的虚拟 NIC 的 Hyper-V VM 中运行,在 Windows 主机后面运行 NAT。另一方面,WSL1 与 Windows NIC 桥接运行。

    在 localhost 上,Windows 似乎确实进行了自动映射,但对于主机 IP 地址(因此,在本地网络上 - 包括 Docker 容器,因为它们在自己的网络上),它没有。即使 Docker 网络处于桥接模式,它仍然看不到 WSL2 IP。

    您可以在 Github thread 上找到有关此特定主题的大量信息,以及我在其他问题的答案中记录的几种解决方法。

    在您的情况下,我建议在 WSL1 实例而不是 WSL2 中运行 Jupyter 笔记本。据我所知,Jupyter 没有什么特别需要 WSL2 功能的,对吧?

    再次,在这里复制/粘贴 -- 您可以通过执行(从 PowerShell)wsl --set-version <distroname> 1 或通过使用 wsl --export <distroname> <archivename>.tarwsl --import <distroname> <installlocation) <archivename>.tar 克隆现有实例,将 WSL2 实例转换为 WSL1。我更喜欢克隆,因为它可以为您提供备份。

    【讨论】:

      猜你喜欢
      • 2017-02-05
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多