【问题标题】:access jupyter notebook running on vm访问在 vm 上运行的 jupyter notebook
【发布时间】:2016-11-27 11:08:38
【问题描述】:

我想在我使用 vagrant 触发的 ubuntu 虚拟机上运行 jupyter notebook。

$ jupyter notebook --no-browser --port 8004 [I 18:26:10.152 NotebookApp] 从本地目录提供笔记本:/home/vagrant/path/to/jupyter/notebook/directory [I 18:26:10.153 NotebookApp] 0 个活动内核 [I 18:26:10.154 NotebookApp] Jupyter Notebook 运行在:http://localhost:8004/ [I 18:26:10.154 NotebookApp] 使用 Control-C 停止此服务器并关闭所有内核(两次跳过确认)。

Jupyter 笔记本在 localhost 中启动。但是要从我的主机访问笔记本,我需要在 0.0.0.0 中启动笔记本。如何绑定 ip 0.0.0.0 使其路由到 vm 中的 127.0.0.1?

我的主机是windows,vm是ubuntu 14.04.4

【问题讨论】:

标签: python vagrant jupyter-notebook


【解决方案1】:

Running a notebook server给出答案

首先生成jupyter_notebook_config.py文件

$ jupyter notebook --generate-config

默认情况下,jupyter_notebook_config.py 会将所有内容都注释掉。修改以下条目:

  • 接受来自任何主机(不仅是本地主机)的传入请求
    找到#c.NotebookApp.ip = 'localhost',改成c.NotebookApp.ip = '*'
  • 不要启动浏览器
    找到#c.NotebookApp.open_browser = True,改成c.NotebookApp.open_browser = False

【讨论】:

    【解决方案2】:

    您可以使用 --ip 参数来更改笔记本服务器将侦听的 IP 地址。

    运行:

    jupyter notebook --ip=0.0.0.0
    

    注意:运行jupyter notebook --help检查参数 P>

    --ip=<Unicode> (NotebookApp.ip)
        Default: 'localhost'
        The IP address the notebook server will listen on.
    

    【讨论】:

      【解决方案3】:

      正如上面的评论所说,您需要在 VM 上转发端口。

      当您运行虚拟机时,机器上的网络通常很少/无法访问外部世界,除非您授予它。通常你可以建立从虚拟机到外部的连接,但是监听端口是另一个步骤。

      假设您的主机名是 myhostname,当您将 myhostname:8080 放入浏览器时,它将被拒绝,因为您的盒子没有任何运行。现在假设您的虚拟机正在 8080 上运行服务器,并且您希望将两者链接起来。您需要按照以下说明进行操作,以便在您点击 myhostname:8080 时,您的本地操作系统会看到 VM 正在侦听该端口。该请求将被传递给 VM,然后再将其转发给您的 jupyter 实例。

      这些是我找到的最好的说明:

      https://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/

      这是我设置的一些屏幕截图。我运行了“python -m http.server 8000”来连接服务器。

      像这样设置你的虚拟机:VM setup

      从您的本地操作系统连接到虚拟服务器,如下所示: Hitting the server from your native OS

      您域中的其他用户应该能够通过 :8000 进行连接。您可以通过在命令行中键入“主机名”在 Windows 上获取它。

      假设您想在端口 80 上向其他用户公开您的 http 服务器,但仍从服务器内部的端口 8000 上运行,您只需更改屏幕截图中的端口转发配置,以便主机端口为 80,而不是 8000。

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        看起来在较新版本的 Jupyter 中,应在配置中进行的更改与上述答案略有不同(否则您可能会收到错误“''似乎不是 IPv4 或 IPv6 地址”)。

        整个解决方案:

        运行:

        • jupyter notebook --generate-config

        改变配置如下:

        • c.NotebookApp.ip = '0.0.0.0'
        • c.NotebookApp.open_browser = False

        现在您可以简单地运行 Jupyter:

        • jupyter notebook

        【讨论】:

          【解决方案5】:

          对于我的情况(在 Ubuntu 中使用 VMware),解决方案非常简单。 默认情况下,网络适配器已经处于 NAT 模式。如果没有,请在 VM 实例的设置中进行调整。

          在 VM 终端中键入 ifconfig 以获取您的本地 IP,例如192.168.124.131.

          启动笔记本:jupyter notebook --ip=192.168.124.131 --no-browser

          然后终端会为您提供一个链接,您可以在主机上使用该链接来访问 jupyter,例如http://192.168.124.131:8888/?token=xxxxxxxxxxxxxxxxxxx.

          【讨论】:

            猜你喜欢
            • 2016-12-14
            • 2019-05-23
            • 2018-09-25
            • 1970-01-01
            • 2022-08-07
            • 2020-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多