Jupyter Notebook怎么在Docker中安装

云涛君_7828

云涛君_7828

2026-09-24

390人浏览

原创

官方jupyter镜像已预装notebook,关键在于选对镜像(如base/scipy/datascience)、挂对目录(-v映射且chown 1000)、配好访问(token或密码、c.notebookapp.ip='0.0.0.0'等),并务必使用start-notebook.sh启动。

jupyter notebook怎么在docker中安装

不需要在Docker里“安装”Jupyter Notebook——绝大多数官方Jupyter镜像已经预装好了,直接运行即可。真正要做的,是选对镜像、挂对目录、配好访问方式,否则你会卡在 token 登录、文件不持久、端口打不开这些地方。

怎么选镜像:别用 python:3.10-slim 直接 pip install notebook

虽然 python:3.10-slim 镜像体积小,但手动 pip install notebook 后会缺很多关键组件:比如 start-notebook.sh 启动脚本、默认用户权限配置、jovyan 用户家目录结构、甚至 jupyter lab 的前端构建资源。结果就是启动失败或功能异常。

  • 基础开发用 jupyter/base-notebook:latest(约 1.2GB),含核心服务和最小依赖
  • 数据分析项目用 jupyter/scipy-notebook:latest,自带 numpy/pandas/matplotlib
  • 机器学习/深度学习场景优先选 jupyter/datascience-notebook:latest,已预装 tensorflow、pytorch、scikit-learn
  • 生产环境建议固定版本号,例如 jupyter/base-notebook:lab-4.0.5,避免 :latest 意外升级破坏兼容性

怎么挂载数据和配置:宿主机路径必须对应容器内路径

容器重启后,Notebook 文件默认会丢失——因为镜像里的 /home/jovyan/work 是临时文件系统。你得用 -v 显式挂载宿主机目录。但注意:官方镜像默认用户是 jovyan(UID 1000),如果宿主机目标目录属主不是 UID 1000,会出现“Permission denied”写入失败。

minimax-mcp-docker版(适配极空间)
minimax-mcp-docker版(适配极空间)

MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。

下载
  • 创建可写目录:mkdir -p ~/jupyter/notebooks && sudo chown 1000:1000 ~/jupyter/notebooks
  • 挂载 notebooks:-v ~/jupyter/notebooks:/home/jovyan/work
  • 挂载配置目录(先生成再挂):docker run --rm -v ~/jupyter-config:/home/jovyan/.jupyter jupyter/base-notebook jupyter notebook --generate-config
  • 后续启动时加:-v ~/jupyter-config:/home/jovyan/.jupyter,这样就能在宿主机直接编辑 jupyter_notebook_config.py

怎么解决登录问题:token 和 password 别混用

新拉的镜像默认启用 token 认证,启动日志末尾会输出一长串 ?token=...。但很多人复制错了位置,或者改了配置却没生效。更麻烦的是,--NotebookApp.token='' 和 c.NotebookApp.password 不能同时为空,否则服务拒绝启动。

  • 快速测试用 token:启动后执行 docker logs <container_id></container_id>,找以 http:// 开头那行完整 URL
  • 想用密码登录:在挂载的 jupyter_notebook_config.py 里写 c.NotebookApp.password = 'sha1:xxx',哈希值用 from notebook.auth import passwd; passwd("your_password") 生成
  • 禁用 token 必须显式设空:CMD ["start-notebook.sh", "--NotebookApp.token=''"],只改配置文件不够
  • c.NotebookApp.ip = '0.0.0.0' 和 c.NotebookApp.allow_origin = '*' 必须配齐,否则局域网其他设备打不开

怎么确认服务真跑起来了:别只看 docker ps

docker ps 显示状态为 Up X seconds 不代表 Jupyter 已就绪。它可能卡在生成证书、等待 kernel 启动、或因权限问题静默失败。

  • 第一反应看日志:docker logs <container_id> | tail -20</container_id>,重点找 is running at: 或 Failed to start
  • 如果日志停在 Generating new certificate,说明容器内 /home/jovyan/.jupyter 不可写(挂载权限不对)
  • 如果报 OSError: [Errno 98] Address already in use,是容器内端口被占,检查是否重复运行或 CMD 写错成 jupyter notebook 而非 start-notebook.sh
  • 浏览器访问 http://localhost:8888 返回 500 或空白页?大概率是前端静态资源加载失败——换用 jupyter/datascience-notebook 镜像,它自带完整前端构建

最常被忽略的点:镜像里 start-notebook.sh 脚本做了大量初始化工作(生成 cert、chown 目录、设置 umask),绕过它直接跑 jupyter notebook 命令,等于放弃整个安全与兼容性设计。别图省事删掉这层封装。

相关文章

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

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

下载

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

相关专题

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

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

2023.07.20

1571

4

python能做什么
python能做什么

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

2023.07.25

3744

7

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

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

2023.07.31

1589

3

python教程
python教程

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

2023.08.03

21517

23

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

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

2023.08.04

2647

5

python eval
python eval

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

2023.08.04

2707

5

scratch和python区别
scratch和python区别

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

2023.08.11

1083

5

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

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

2023.08.10

576

4

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

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

2023.08.11

2083

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习