阶段 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$ exitJupyter Notebook 里无法显示中文?
菜单栏
Settings->Language->Chinese (Simplified) 中文简体,然后对话框选择Change and load即可。