Jupyter Notebook怎么在Docker中部署

云墨吖_4344

云墨吖_4344

2026-08-23

340人浏览

原创

直接用docker run启动官方镜像虽能快速验证,但默认无密码、无持久化、不可远程访问;需通过-p映射端口、-v挂载~/jupyter/notebooks到/home/jovyan/work实现文件保存,并用--notebookapp.password='sha1:xxx'设哈希密码替代token,避免明文泄露。

jupyter notebook怎么在docker中部署

直接用 docker run 启动官方镜像就能跑起来,但默认没密码、没持久化、不能访问——这些才是实际部署时卡住人的地方。

怎么拉镜像并快速验证是否能跑通

别从 docker search jupyter 里随便选,优先用官方维护的稳定镜像:

  • jupyter/base-notebook:最小依赖,适合自己装包;
  • jupyter/scipy-notebook:带 NumPy/Pandas/Matplotlib,日常分析够用;
  • jupyter/datascience-notebook:含 TensorFlow/PyTorch/Scikit-learn,机器学习项目首选。

执行这行命令拉取并立即试运行(不加任何配置):

docker run -it --rm -p 8888:8888 jupyter/scipy-notebook

终端会输出一串以 ?token= 开头的 URL,复制粘贴到浏览器即可打开。如果打不开,大概率是防火墙或云服务器安全组没放行 8888 端口。

为什么容器一重启就丢 notebook 文件

因为容器内文件默认是临时的,关掉就清空。必须挂载宿主机目录才能持久化:

Docker Image Puller
Docker Image Puller

使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。

下载
  • 先在宿主机建好目录:mkdir -p ~/jupyter/notebooks;
  • 启动时用 -v 映射进去:-v ~/jupyter/notebooks:/home/jovyan/work;
  • 注意路径必须是 /home/jovyan/work ——这是官方镜像里预设的工作目录,写错就映射失败;
  • 不要映射整个 /home/jovyan,否则可能覆盖用户配置、导致启动报错。

完整示例:

docker run -d -p 8888:8888 \
  -v ~/jupyter/notebooks:/home/jovyan/work \
  jupyter/scipy-notebook

怎么去掉 token 或设密码登录

默认每次启动都生成随机 token,不方便远程访问。两种常用做法:

  • 禁用 token(仅限内网可信环境):--NotebookApp.token='';
  • 用哈希密码替代(推荐):先在本地 Python 中生成哈希值:from notebook.auth import passwd; passwd("your_password"),然后传入 --NotebookApp.password='sha1:xxx';
  • 千万别在命令行里直接写明文密码,会被 ps 或 shell history 泄露;
  • 如果用了 jupyter_notebook_config.py 配置文件,记得挂载进去:-v ~/jupyter-config:/home/jovyan/.jupyter。

Docker Compose 部署更稳,但要注意几个坑

单容器用 docker run 就够,但要加监控、日志、自动重启或连数据库,就得上 docker-compose.yml:

  • restart: unless-stopped 必加,否则容器崩溃后不会自启;
  • environment 里设 JUPYTER_ENABLE_LAB=yes 才能默认开 JupyterLab;
  • 端口映射写成 "8888:8888",别漏引号,YAML 对格式敏感;
  • 如果用 build: . 自定义镜像,确保 Dockerfile 里 CMD 调用的是 start-notebook.sh,不是裸 jupyter notebook,否则信号处理和权限会出问题。

配置文件里最常漏的一行是:GRANT_SUDO=yes ——没它,notebook 里执行系统命令(比如 !pip install)会 Permission denied。

真正麻烦的不是启动,而是后续维护:比如想升级 Python 包版本,得重建镜像;想换内核(R/Julia),得确认基础镜像是否支持;多人共用时,jovyan 用户权限和 /home/jovyan 目录归属稍不注意就会变成 root 写入、普通用户读不了。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1771

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4604

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1749

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

27257

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3287

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3307

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1203

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2563

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程