docker部署nginx+jupyter
Jupyter 是一个开源的交互式计算环境,它可以让用户创建和共享包含代码、可视化和说明文本的文档,通常被称为笔记本。Jupyter 的名称来源于三种核心编程语言:Julia、Python 和 R,这三种语言是 Jupyter 最初支持的。现在,Jupyter 也支持其他编程语言和工具。
Jupyter 的核心组件包括:
Jupyter Notebook: 这是 Jupyter 最为人熟知的部分,它是一个基于 Web 的应用程序,允许用户创建和共享包含实时代码、可视化和文本说明的笔记本文档。用户可以在笔记本中运行代码块,并查看代码执行结果、图表、文本输出等。
Jupyter Kernel: 内核是 Jupyter 与不同编程语言进行交互的后端程序。Jupyter 支持多种编程语言的内核,包括 Python、R、Julia、Java 等,这使得用户可以在同一个 Jupyter 环境中使用不同的编程语言进行交互式计算。
JupyterLab: JupyterLab 是一个扩展了 Jupyter Notebook 的下一代 Web 用户界面,提供了更强大的交互式开发环境,支持文件浏览、交互式窗口、文本编辑器、终端等功能。
Jupyter 被广泛应用于数据分析、机器学习、科学计算、教育等领域,它的交互式特性使得用户可以方便地探索数据、编写实验性代码、展示研究成果等。通过 Jupyter Notebook 的分享功能,用户可以将自己的工作以交互式的方式分享给他人,这对于教学和合作研究非常有用。
1.安装docker
| yum -y install yum-utils device-mapper-persistent-data lvm2 gcc yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y install docker-ce mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://hxqazmaw.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl start docker systemctl enable docker systemctl status docker
|
2.拉取nginx、jupyter镜像
| docker pull nginx:latest docker pull jupyter/scipy-notebook:latest
|
3.创建相关目录
| mkdir -p /opt/nginx/www mkdir -p /opt/nginx/conf/conf.d mkdir -p /opt/nginx/ssl mkdir -p /opt/notebook chmod 777 /opt/notebook
|
4.创建nginx反向代理配置
!!!需配置websocket,否则内核无法连接!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| cat > /opt/nginx/conf/conf.d/default.conf <<EOF server { listen 443 ssl; server_name zzz.curtain-z.cn; ssl_certificate /etc/nginx/ssl/zzz.curtain-z.cn_bundle.crt; ssl_certificate_key /etc/nginx/ssl/zzz.curtain-z.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location ^~ / { #jupyter镜像默认端口为8888 proxy_pass http://notebook:8888; #websocket额外配置开始 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 连接超时时间,不能设置太长会浪费连接资源 proxy_connect_timeout 60s; # 读超时时间 proxy_read_timeout 500s; # 写超时时间 proxy_send_timeout 500s; #websocket额外配置结束 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; } } server { listen 80; server_name zzz.curtain-z.cn; return 301 https://$host$request_uri; } EOF
|
5.启动nginx、jupyter容器
| docker run -itd --name notebook --restart=always -v /opt/notebook:/home/jovyan jupyter/scipy-notebook:latest docker run --name nginx -p 80:80 -p443:443 -d -v /opt/nginx/www:/usr/share/nginx/html -v /opt/nginx/conf/conf.d:/etc/nginx/conf.d -v /opt/nginx/ssl:/etc/nginx/ssl --restart always --link notebook:notebook nginx
|
6.通过域名访问jupyter
7.查看Token
| docker exec -it notebook jupyter notebook list
|
8.添加中文选项

| docker exec -it notebook pip install jupyterlab-language-pack-zh-CN
|

9.设置文件自动保存间隔时间
