我想在我的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 回答
Running a notebook server给出了答案
首先生成jupyter_notebook_config.py文件
默认情况下,jupyter_notebook_config.py会对所有内容进行评论 . 修改以下条目:
接受来自任何主机(不仅是localhost)的传入请求
找到
#c.NotebookApp.ip = 'localhost'
并将其更改为c.NotebookApp.ip = '*'
不要启动浏览器
找到
#c.NotebookApp.open_browser = True
并将其更改为c.NotebookApp.open_browser = False
如上面的评论所述,您需要转发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 .
希望这可以帮助