首页 > 解决方案 > 如何正确共享一个 jupyter docker 来托管

问题描述

我正在尝试访问在我的主机上的 docker (windows) 上运行的 jupyter。运行常规命令时:

docker run -it -p 8888:8888 -v ~:/home/jovyan/workspace jupyter/tensorflow-notebook

我收到了可以访问笔记本的地址:

    To access the notebook, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
    Or copy and paste one of these URLs:
        http://(be1b837f3804 or 127.0.0.1):8888/?token=0b2a6eaec3aae87xc2c04....

使用 127.0.0.1 但不能使用其他地址时,我可以在我的主机(Windows)上访问它。我的目标最终是从另一台本地计算机访问此地址。我究竟做错了什么?

标签: dockerjupyter-notebook

解决方案


be1b837f3804是容器的主机名,容器外的客户端无法访问它。

事实上,当您使用127.0.0.1:8888访问您的服务时,您仍然不是直接访问容器。它会先访问主机的网络命名空间(127.0.0.1),然后因为你做了端口绑定(-p 8888:8888),所以到主机8888的所有流量都会路由到容器的8888端口。

所以,正如我在评论中所说,如果你想从其他客户端访问容器的服务,你必须指定主机的 ip,例如 docker 主机的 ip is 192.168.1.101,然后在其他电脑上,打开 next 访问:

http://192.168.1.101:8888/?token=0b2a6eaec3aae87xc2c04....

您可能还想看看官方指南


推荐阅读