Linux系统使用Docker部署Jupyter Notebook结合内网穿透实现公网访问本地笔记

文章目录

    • 1. 选择与拉取镜像
    • 2. 创建容器
    • 3. 访问Jupyter工作台
    • 4. 远程访问Jupyter工作台
      • 4.1 内网穿透工具安装
      • 4.2 创建远程连接公网地址
      • 4.3 使用固定二级子域名地址远程访问

本文主要介绍如何在Ubuntu系统中使用Docker本地部署Jupyter Notebook,并结合cpolar内网穿透工具实现任意浏览器公网远程访问本地部署的Jupyter Notebook界面。

Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言。可以使用它来创建和共享程序文档,支持实时代码,数学方程,可视化和 markdown。具有数据清理和转换,数值模拟,统计建模,机器学习等等用途。

要使用Docker部署Jupyter Notebook非常简单,只需要选择并拉取你想要安装的版本镜像,然后在容器中进行参数设置就可以启动容器,运行Jupyter Notebook了。

1704872364094

1. 选择与拉取镜像

本文中使用的操作系统为Ubuntu,在终端中执行命令:

如何在Ubuntu使用docker部署Jupyter Notebook并实现公网远程访问

sudo docker search Jupyter

即可看到各种版本的Jupyter Notebook镜像,可以根据自己不同的需求选择想要安装的镜像。

1704872704867

本教程中我们以jupyter/base-notebook这个基础版本镜像为例,进行镜像拉取。

执行命令:

sudo docker pull jupyter/base-notebook

1704873206171

执行命令后稍等一会儿就可以看到jupyter/base-notebook镜像已经拉取完毕。

执行命令:

sudo docker images

可以看到本地所有镜像,其中就有刚才拉取的jupyter/base-notebook镜像。

1704873403426

2. 创建容器

在拉取了Jupyter镜像后,我们就可以使用Docker创建容器来运行Jupyter Notebook了。

执行命令:

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

即可创建一个在后台运行的名为jupyter的容器,并将本地端口8888映射到容器的8888端口。

执行命令:

sudo docker ps -a

可以看到容器已经成功运行了。

1704874339782

3. 访问Jupyter工作台

此时,我们在浏览器中输入本机ip地址加端口即可访问Jupyter工作台:

http://127.0.0.1:8888

1704876066962

可以看到,顶部显示我们需要输入密码或者token进行登录。

token获取可以在终端中执行命令sudo docker logs 你的Jupyter容器id进行查看:

1704876294919

在显示的信息底部,可以看到一长串的字符构成的token,下图红框中67f4开头,ec38结尾的这个即是。

1704876361155

将这串字符复制下来,回到刚才打开的浏览器中进行粘贴:

1704876453420

点击log in登录,即可进入Jupyter工作台:

1704876568036

如上图显示,则表示已经成功登录。

不过由于token不方便记忆,所以可以登出后重新登录界面,使用token来设置或修改密码,之后即可使用密码登录。

1704876901474

确认后,会自动跳转到工作台界面:

1704877136738

点击功能导航中的File,选择Log Out,即可登出,之后再登录工作台就可以在顶部输入刚才设置的密码登录了。

4. 远程访问Jupyter工作台

现在,我们可以在本地使用浏览器登录使用Docker部署的Jupyter工作台了。

1704877388029

在工作台中选择Notebook下的Python3(ipykernel),即可创建一个.ipynb文件,开始愉快的使用Jupyer Notebook了。

1704877526621

不过我们只能在本地使用刚刚部署的Jupyer Notebook,如果身在异地,想要远程访问在本地部署的Jupyer Notebook容器,但又没有公网ip怎么办呢?

我们可以使用cpolar内网穿透工具来实现无公网ip环境下的远程访问需求。

4.1 内网穿透工具安装

下面是安装cpolar步骤:

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问Linux 的9200端口即:【http://服务器的局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可。

image-20230831171159175

4.2 创建远程连接公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:jup
  • 协议:http
  • 本地地址:8888
  • 域名类型:随机域名
  • 地区:选择China Top

点击创建

1704879225242

创建成功后,打开左侧在线隧道列表,查看刚刚创建隧道后生成两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址复制到浏览器访问即可。

1704879329122

可以看到,能够正常公网远程访问。

1704879409719

输入密码后即可实现在公网远程登录本地内网部署的Jupyer Notebook工作台界面。

image-20240110173836900

小结

为了方便演示,我们在上边的操作过程中使用了cpolar生成的http公网地址隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

如果有长期远程访问Jupyter Notebook的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定二级子域名地址的方式来远程访问。

4.3 使用固定二级子域名地址远程访问

接下来保留一个固定http地址,登录cpolar官网,点击左侧的预留,找到保留二级子域名,为远程服务器连接保留一个固定二级子域名地址:

  • 地区:选择China VIP
  • 描述:即备注,可自定义,本例使用jup123

点击保留

1704879970277

地址保留成功后,复制生成的公网地址,打开cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们刚才创建的随机公网地址隧道 jup,点击编辑

1704880021100

修改隧道信息,将刚才保留成功的固定http地址:jup123 配置到隧道中

  • 域名类型:选择二级子域名
  • 预留的http地址:复制粘贴官网保留成功的地址,本例中为:jup123
  • 地区选择:China VIP

点击更新

1704880161012

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新为了两个固定二级子域名地址。

1704880220608

接下来与之前的操作一样,可以在其他电脑(异地)上,使用任意一个固定二级子域名地址复制到浏览器访问即可。

1704880312401

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/288265.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《早起的奇迹》要么躺在床上等待生活的暴击,要么早起创造奇迹 - 三余书屋 3ysw.net

精读文稿 今天我们讲述的是关于《早起的奇迹》。通过神奇的早起,我们可以获得改变人生的力量。首先我要给你讲一个故事,这个故事的主人公是一个年轻人,他在少年时就取得了巨大的成就,在15岁时他已经拥有了自己的电台节目&#xff…

数据结构:堆和二叉树遍历

堆的特征 1.堆是一个完全二叉树 2.堆分为大堆和小堆。大堆:左右节点都小于根节点 小堆:左右节点都大于根节点 堆的应用:堆排序,topk问题 堆排序 堆排序的思路: 1.升序排序,建小堆。堆顶就是这个堆最小…

2024/03/27(C++·day3)

一、思维导图 二、完成下面类 代码 #include <cstring> #include <iostream>using namespace std;class myString { private:char *str; // 记录C风格的字符串int size; // 记录字符串的实际长度public:// 无参构造函数myString() : size(10){str new char[si…

JVM(六)——内存模型与高效并发

内存模型与高效并发 一、java 内存模型 【java 内存模型】是 Java Memory Model&#xff08;JMM&#xff09; 简单的说&#xff0c;JMM 定义了一套在多线程读写共享数据时&#xff08;成员变量、数组&#xff09;时&#xff0c;对数据的可见性、有序 性、和原子性的规则和保障…

基于springboot+vue+Mysql的网上图书商城

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

M1 mac安装 Parallels Desktop 18 激活

M1 mac安装 Parallels Desktop 18 激活 下载安装Parallels Desktop 18.1.1 (53328) 激活1. 拷贝prl_disp_service2. 在终端打开Crack所在位置3. 输入命令&#xff0c;激活成功 下载 安装包和激活文件下载地址 链接: https://pan.baidu.com/s/1EjT7xeEDcntIIoOvvhBDfg?pwd9pue …

基于springboot的房屋租赁管理系统+数据库+免费远程调试

项目介绍: 基于springboot的房屋租赁管理系统。Javaee项目&#xff0c;springboot项目&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringBoot JspMaven来实现。MyS…

基于Springboot的艺体培训机构业务管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的艺体培训机构业务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

【Linux】模拟实现shell(bash)

目录 常见的与shell互动场景 实现代码 全部代码 homepath()接口 const char *getUsername()接口 const char *getHostname()接口 const char *getCwd()接口 int getUserCommand(char *command, int num)接口 void commandSplit(char *in, char *out[])接口 int execut…

IDEA报错Access denied for user ‘root‘@‘localhost‘ (using password: YES)

密码没错&#xff0c;可以正常连接上Mysql 甚至连图形化界面都可以连接得上 重改密码&#xff0c;没有用。 查看端口是3306也没有问题 看端口是不是被多个进程占用&#xff0c;果然&#xff01; 在资源管理器关掉一个后就行了

【新手教程】mmselfsup训练教程及常见报错处理

mmselfsup教程 1.安装mmselfsup2.了解文件结构与配置3.训练常见报错1.报错&#xff1a;FileNotFoundError: [Errno 2] No such file or directory:data/imagenet/train/./train/n04311004/images/n04311004_194.JPEG2.报错&#xff1a;报错ImportError: /mmcv/_ext.cpython-38-…

ASP.NET-Global.asax使用详解

本文介绍了如何使用Global.asax文件来增强ASP.NET Web应用程序的功能。首先&#xff0c;介绍了Global.asax文件的作用和基本功能。接着&#xff0c;详细探讨了在Global.asax中实现定时任务、应用程序级别的错误处理、应用程序启动和结束时执行特定逻辑等功能。随后&#xff0c;…

学习使用xbox手柄控制小乌龟节点移动

使用xbox手柄控制小乌龟&#xff0c;首先要下载joy功能包&#xff0c;发布sensor_msgs话题也就是手柄和ros通信的话题。 下载的步骤就根据官方文档即可 joy/Tutorials/ConfiguringALinuxJoystick - ROS Wiki 这里我提供一下具体步骤 第一步 安装joy 首先安装对应系统版本的…

STM32串口收发单字节数据原理及程序实现

线路连接&#xff1a; 显示屏的SCA接在B11&#xff0c;SCL接在B10&#xff0c;串口的RX连接A9&#xff0c;TX连接A10。 程序编写&#xff1a; 在上一个博客中实现了串口的发送代码&#xff0c;这里实现串口的接收代码&#xff0c;在上一个代码的基础上增加程序功能。 Seiral.…

单页面应用部署到iis上可以正常打开,刷新就404

当您遇到Dumi打包的网站部署到IIS上可以正常打开首页,但刷新页面时出现404错误的情况,这通常与以下几个方面有关: 路由处理: Dumi生成的项目通常基于SPA(Single Page Application)架构,使用前端路由来实现无刷新导航。这意味着大部分页面切换是在浏览器层面完成的,而不…

深入理解Vue的生命周期机制

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

中伟视界:智能识别!电动车戴头盔系统,保障您的安全出行

电动车AI头盔识别系统是一种利用人工智能技术提高道路安全的创新应用。该系统的核心目的是确保电动车驾驶者遵守交通安全规则&#xff0c;特别是佩戴头盔这一基本安全措施。通过自动识别驾驶者是否佩戴头盔&#xff0c;这一系统能够鼓励更为安全的骑行行为&#xff0c;减少交通…

【Pt】新建项目时的设置

新建项目时需要在如下界面做一些设置。 一、模板与文件 模板通常选择“PBR - Metallic Roughness Alpha-blend” 文件可以选择fbx&#xff0c;abc&#xff0c;obj等格式的三维模型文件 二、项目设置 2.1 文件分辨率 指的是在软件中的预览效果&#xff0c;分辨率越高预览效果…

Docker搭建LNMP环境实战(04):安装VMwareTools共享文件夹

1、加载VMware Tools安装盘 在VMware客户端&#xff0c;点击主菜单&#xff1a; 图1 启动VMware Tools安装 再点击下面的菜单&#xff1a; 图2 打开设置界面 出现下面的界面&#xff0c;虚拟DVD加载的是linux.iso 图3 查看VMware Tools的DVD虚拟安装映像文件 将DVD加载到CentO…

攻防世界逆向刷题

阅读须知&#xff1a; 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者 本人负责&#xff0c;作者不为此承担任何责任,如…