阶段 1: 单容器 Jupyter 环境
代码地址:prevailna/01-single-container at prevailna · prevailna/project-1-jupyter
项目说明
通过 Docker 快速搭建一个适合个人数据分析和学习的 Jupyter Notebook 环境。
- 一键启动 Jupyter Notebook/Lab 环境
- 数据卷挂载:持久化
notebooks
和data
目录,数据不随容器丢失 - 预装常用数据科学库(
pandas
、numpy
、matplotlib
、seaborn
) - 提供示例数据和欢迎笔记本
- 支持中文界面(已安装
jupyterlab-language-pack-zh-CN
语言包)
目录结构
bash
./01-single-container
├── data # 数据目录, 持久化
│ └── docker-training-advanced.csv
├── docker-compose.yml
├── Dockerfile # 基于 python:3.10-slim
├── Dockerfile.jupyter # 基于 jupyter/scipy-notebook
├── Makefile
├── notebooks # 笔记本目录, 持久化
│ └── Welcome.ipynb
├── README.md
├── requirements.txt
└── start.sh
使用指南
功能 | Make | Docker Compose | 说明 |
---|---|---|---|
构建镜像 | make build | docker compose build --no-cache | 强制重新构建镜像(不使用缓存) |
启动服务 | make all | docker compose up -d --build | 构建镜像并启动服务,访问 http://127.0.0.1:8888/lab(无 token) |
启动容器 | make up | docker compose up -d --build | 启动容器(如果镜像已存在则使用缓存) |
关闭服务 | make down | docker compose down | 停止并移除容器 |
重启服务 | make restart | docker compose down && docker compose up -d | 重启容器 |
查看日志 | make logs | docker compose logs -f | 实时查看容器日志(-f 跟随输出) |
进入容器 | make bash | docker compose exec jupyter bash | 进入容器的交互式 Shell |
查看状态 | make status | docker compose ps | 查看当前项目容器状态 |
常见问题
Jupyter Notebook 里新建的文件无法保存?
原因是:Docker 挂载 host 目录时,容器内对这些目录的权限受 host 端文件系统限制。cnb 环境内默认是 root 登录,所以
./notebooks
和./data
目录的权限是root:root
。挂载到容器内时,容器内用户 jovyan 的权限是1000:100
,所以无法写入。解决方案:cnb 环境内执行
chown -R 1000:100 ./notebooks ./data
,这样容器内的 jovyan 用户(UID 1000)就能正常写入。然后进入容器内,查看文件权限,确认文件夹权限是drwxrwsr-x
即可。bashdocker compose -f docker-compose.yml exec jupyter bash (base) jovyan@c0122c1bfbfb:/workspace$ ls -la total 0 drwsrwsr-x 1 jovyan users 26 Jul 10 21:23 . drwxr-xr-x 1 root root 47 Jul 10 21:23 .. drwxr-xr-x 1 jovyan users 50 Jul 10 16:19 data drwxr-xr-x 1 jovyan users 104 Jul 10 19:52 notebooks (base) jovyan@c0122c1bfbfb:/workspace$ exit
Jupyter Notebook 里无法显示中文?
菜单栏
Settings
->Language
->Chinese (Simplified) 中文简体
,然后对话框选择Change and load
即可。