Jupyter Notebook工具介绍
一、Jupyter Notebook介绍
Jupyter Notebook是一个开源的Web应用程序,允许用户创建和共享包含代码、方程式、可视化和文本的文档。它的用途包括:数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等等。它具有以下优势:
(1)可选择语言:支持超过40种编程语言,包括Python、R、Julia、Scala等。
(2)分享笔记本:可以使用电子邮件、Dropbox、GitHub和Jupyter Notebook Viewer与他人共享。
(3)交互式输出:代码可以生成丰富的交互式输出,包括HTML、图像、视频、LaTeX等等。
(4)大数据整合:通过Python、R、Scala编程语言使用Apache Spark等大数据框架工具。支持使用pandas、scikit-learn、ggplot2、TensorFlow来探索同一份数据。
JupyterNotebook容器镜像地址:https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html
# 针对不同需求与场景,官方提供了多种镜像版本
jupyter/base-notebook
jupyter/minimal-notebook
jupyter/r-notebook
jupyter/scipy-notebook
jupyter/tensorflow-notebook
jupyter/datascience-notebook
jupyter/pyspark-notebook
jupyter/all-spark-notebook
下图描述了核心镜像的构建依赖树。(即,FROM他们的 Dockerfiles 中的语句)。任何给定的图像都会继承指向它的所有祖先图像的完整内容。
Jupyter Notebook docs:https://jupyter-notebook.readthedocs.io/en/stable/public_server.html
二、Jupyter Notebook容器化部署
2.1 Pull镜像
[root@blogs-v2 ~]# docker pull jupyter/all-spark-notebook
2.2 运行容器
[root@blogs-v2 ~]# mkdir -p /data/Jupyter/UStarGao/ [root@blogs-v2 ~]# chmod 777 /data/Jupyter/UStarGao/ [root@blogs-v2 ~]# docker run -d -p 8888:8888 -v /data/Jupyter/UStarGao/:/home/jovyan/ --restart=always --name=UStarGao jupyter/all-spark-notebook [root@blogs-v2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7862100e11f7 jupyter/all-spark-notebook "tini -g -- start-..." 3 seconds ago Up 2 seconds 0.0.0.0:8888->8888/tcp UStarGao
2.3 密码配置
[root@blogs-v2 ~]# docker exec -it UStarGao bash jovyan@7862100e11f7:~$ jupyter notebook password Enter password: Verify password: [NotebookPasswordApp] Wrote hashed password to /home/jovyan/.jupyter/jupyter_notebook_config.json # 获取token重置密码 jovyan@7862100e11f7:~$ jupyter notebook list Currently running servers: http://0.0.0.0:8888/?token=47a91a9bccfbb7cc428a67258c1a7e4704b5e675de2c963f :: /home/jovyan
2.4 Nginx HTTPS解决方案
(1)配置SSL证书
[root@ansible ~]# vim /etc/nginx/conf.d/jupyter.starcto.com.conf server { listen 80; listen [::]:80; server_name jupyter.starcto.com; rewrite ^ https://$http_host$request_uri? permanent; } server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name jupyter.starcto.com; ssl_certificate "/data/ssl/jupyter.starcto.com/public.pem"; ssl_certificate_key "/data/ssl/jupyter.starcto.com/private.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://10.25.203.134:8888; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
(2)多SSL证书配置要求
Nginx支持TLS协议的SNI扩展(Server Name Indication,简单地说这个扩展使得在同一个IP上可以以不同的证书serv不同的域名)。不过,SNI扩展还必须有客户端的支持,另外本地的OpenSSL必须支持它。 如果启用了SSL支持,nginx便会自动识别OpenSSL并启用SNI。是否启用SNI支持,是在编译时由当时的 ssl.h 决定的(SSL_CTRL_SET_TLSEXT_HOSTNAME),如果编译时使用的OpenSSL库支持SNI,则目标系统的OpenSSL库只要支持它就可以正常使用SNI了。 nginx在默认情况下是TLS SNI support disabled。
[root@ansible ~]# nginx -V nginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.1.1g FIPS 21 Apr 2020 TLS SNI support enabled
(3)修改主配置文件
[root@ansible ~]# vim /etc/nginx/nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; # 80跳转443 server { listen 80; listen [::]:80; server_name img.starcto.com; rewrite ^ https://$http_host$request_uri? permanent; } # https证书配置 server { listen 443 ssl http2 ; listen [::]:443 ssl http2; server_name img.starcto.com; ssl_certificate "/data/ssl/img.starcto.com/public.pem"; ssl_certificate_key "/data/ssl/img.starcto.com/private.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://10.25.203.134:9001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
2.5 WEB 访问测试
【注】输入秘钥即可登录到Jupyter主页面。
三、JupyterHub解决方案
3.1 JupyterHub介绍
JupyerHub是一个多用户的JupyerNotebook管理器。默认情况下,JupyerNotebook是不支持多用户使用的。而JupyterHub刚好弥补了这一缺点。在Docker中,JupyterHub更像一个守卫,首先,你要通过身份验证,然后,通过一个叫Spawn的机制为每一个通过验证的用户生成一个新的Docker容器,这样就可以多用户使用JupyterNotebook了。同时,JupyerHub还支持文件夹共享,这个对于多用户协作来说是刚需,而这是普通JupyerNotebook做不到的。
JupyterHub官网地址:https://jupyterhub.readthedocs.io/en/stable/index.html
3.2 JupyterHub容器化部署
推荐参考教程:https://www.biaodianfu.com/docker-jupyterhub.html
作者:UStarGao
链接:https://www.starcto.com/open-sourcing/213.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-08-21开源IP地址管理系统phpipam部署
- 2021-06-27Nginx应用场景详解
- 2021-09-09开源Wazuh安全平台容器化部署
- 2021-11-17Linux系统设置秘钥登录+禁用密码登录(免密登录)
- 2021-08-08UCloud ULB负载均衡https解决方案