当前位置: 首页 > article >正文

无公网IP 外网访问 Jupyter Notebook

Jupyter Notebook 是一个开源的Web应用程序,允许用户创建和共享包含实时代码、方程式、可视化和叙述文本的文档。它支持超过40种编程语言。

 

本文将详细的介绍如何用 Docker 在本地安装部署 Jupyter Notebook,并结合路由侠内网穿透实现外网访问本地部署的 Jupyter Notebook。

第一步,本地部署安装 Jupyter Notebook

1,输入执行下面命令拉取 Jupyter 镜像。

docker pull jupyter/base-notebook

2,输入执行下面命令启动Jupyter镜像。

docker run -d -p 8888:8888 jupyter/base-notebook

3,用 docker ps 查看镜像。
 


4,在浏览器输入 http://本地IP:8888,显示下面主界面,这里需要密码或者 token 才能登录。
 


5,用 docker logs 容器ID 或者容器名来获取token,执行命令后往下拉,可以看到token,把红色下划线的部分复制下来。
 

 


6,把复制下来的token粘贴到登录框中,点击【Log in】登录进去。
 


7,这就是Jupyter工作台了。
 


8,可以按下图在File里面找到Log Out退出登录。


9,由于token不方便记,可以在重新登录界面,使用token来设置新密码,之后就可以直接用密码登录了。

第二步,外网访问本地的 Jupyter Notebook

安装路由侠内网穿透。

1,当前未提供网页管理,需要先在任意一台 Windows 机器安装路由侠 Windows 版本,用作跨机器管理。

2,在路由侠客户端主界面,进入“设备管理”,点击右下角的“添加设备”,此时可查看到对应的安装码,此安装码用于将设备添加到对应账号下,可选中后复制。

 

 

 

3,可使用以下 Docker 命令拉取镜像:

docker pull luyouxia/lyx

注意,如果因网络问题,镜像无法拉取,可直接下载后导入:

wget https://dl.luyouxia.com:8443/v2/lyx-docker-i686.tar
docker load -i lyx-docker-i686.tar

4,然后使用该镜像启动容器

docker run --name lyx -it --restart=always --net=host -e code=这里填写安装码 luyouxia/lyx

5,此时,需要等待下载和安装的过程,如果一切正常,最终可以看到一些输出,并且可以看到如下提示:

[Device] Logged in. Token: ....

这就表示安装成功了。

当前 Linux 终端这边,如果是使用的上面的命令,Docker 是运行在前台,此时可以按住 Ctrl+C ,退出路由侠,容器也将退出。现在可以使用以下命令将其放入后台持续运行:

docker start lyx

注意如果容器删除,重新 docker run, 将创建为新的设备。

需要注意的是,因为容器参数已经添加了 --restart=always,这样开机就会自动启动,不需要再手动启动路由侠了。

6,现在回到 Windows 这边设备列表,点击右上角的×返回主界面,再次进入,就可以找到这个设备,可以修改名称。

7,回到主界面,点击【内网映射】。

8,注意右上角的设备名称下拉框,这里选中刚刚添加的设备名称,此时在这个界面上添加的映射,就属于刚刚这个设备。添加或修改一般需要等待30秒,容器中的路由侠进程就会更新并加载。切换好设备后,点击【添加映射】。

9,选择【原生端口】。

10,在内网端口里填写端口 8888 后点击【创建】按钮,如下图。

11,创建好后,就可以看到一条映射的公网地址,鼠标右键点击【复制地址】。

12,在外网的浏览器的地址栏输入复制的外网地址就可以看到本地部署的 Jupyter Notebook 界面了。输入密码登录即可。

 


http://www.kler.cn/a/531706.html

相关文章:

  • 小程序设计和开发:如何研究同类型小程序的优点和不足。
  • ubuntu18.04环境下,Zotero 中pdf translate划线后不翻译问题解决
  • DeepSeek-R1:通过强化学习激励大型语言模型(LLMs)的推理能力
  • 深入解析 posix_spawn():高效的进程创建方式(中英双语)
  • 单调队列 滑动窗口(题目分析+C++完整代码)
  • 网络协议基础
  • 框架与代码的形状
  • C语言基础系列【2】开发环境搭建
  • 【Java基础-42.3】Java 基本数据类型与字符串之间的转换:深入理解数据类型的转换方法
  • 测试相关基础
  • 除了成本核算,还有哪些财务分析工具可以提高工作效率?
  • 信息学奥赛一本通 2113:【24CSPJ普及组】小木棍(sticks) | 洛谷 P11229 [CSP-J 2024] 小木棍
  • 【Leetcode刷题记录】680. 验证回文串 II
  • 解决对axios请求返回对象进行json化时报“TypeError Converting circular structure to JSON“错误的问题
  • 直方图:摄影中的视觉数据指南
  • ANSYS Mechanical APDL打开cdb文件
  • AUTOSAR从入门到精通-【新能源汽车】高压配电管理(PDU/BDU)(二)
  • 使用scikit-learn中的K均值包进行聚类分析
  • 【最长上升子序列Ⅱ——树状数组,二分+DP,纯DP】
  • [论文学习]Adaptively Perturbed Mirror Descent for Learning in Games
  • PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
  • FPGA|IP核PLL调用测试:建立工程
  • 【前端知识】常用CSS样式举例
  • Android开发工作经历整理
  • Vuex状态管理
  • 【漫话机器学习系列】078.如何选择隐藏单元激活函数(How To Choose Hidden Unit Activation Functions)