首页 文章

访问在vm上运行的jupyter笔记本

提问于
浏览
3

我想在我的ubuntu vm上运行jupyter笔记本,我使用vagrant进行了解决 .

$ jupyter notebook --no-browser --port 8004
[I 18:26:10.152 NotebookApp] Serving notebooks from local directory: /home/vagrant/path/to/jupyter/notebook/directory
[I 18:26:10.153 NotebookApp] 0 active kernels
[I 18:26:10.154 NotebookApp] The Jupyter Notebook is running at: http://localhost:8004/
[I 18:26:10.154 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

Jupyter笔记本在localhost中启动 . 但要从我的主机访问笔记本电脑,我需要在0.0.0.0中启动笔记本电脑 . 如何绑定ip 0.0.0.0以便它在vm中路由到127.0.0.1?

我的主机是windows,vm是ubuntu 14.04.4

2 回答

  • 4

    Running a notebook server给出了答案

    首先生成jupyter_notebook_config.py文件

    $ jupyter notebook --generate-config
    

    默认情况下,jupyter_notebook_config.py会对所有内容进行评论 . 修改以下条目:

    • 接受来自任何主机(不仅是localhost)的传入请求
      找到 #c.NotebookApp.ip = 'localhost' 并将其更改为 c.NotebookApp.ip = '*'

    • 不要启动浏览器
      找到 #c.NotebookApp.open_browser = True 并将其更改为 c.NotebookApp.open_browser = False

  • 1

    如上面的评论所述,您需要转发VM上的端口 .

    当您运行VM时,除非您授予它,否则该框上的网络通常很少/无法访问外部世界 . 通常,您将能够从VM连接到外部,但是侦听端口是另一个步骤 .

    假设您的主机名是myhostname,当您将myhostname:8080放入浏览器时,它将被拒绝,因为您的框没有运行任何内容 . 现在假设您的VM在8080上运行服务器,并且您想要将这两者联系起来 . 您需要按照以下说明操作,以便当您点击myhostname:8080时,您的本机操作系统将看到VM正在侦听该端口 . 请求将被传递给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:VM setup

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

    您域中的其他用户应该能够通过以下方式连接:8000 . 您可以通过在命令行上键入“hostname”来获取Windows上的内容 .

    假设您希望将您的http服务器暴露给端口80上的其他用户,但仍然在服务器内的端口8000上运行,您只需更改端口中的portforwarding配置,以便主机端口为80而不是8000 .

    希望这可以帮助

相关问题