Skip to content

阶段 1: 单容器 Jupyter 环境

代码地址:prevailna/01-single-container at prevailna · prevailna/project-1-jupyter

项目说明

通过 Docker 快速搭建一个适合个人数据分析和学习的 Jupyter Notebook 环境。

  • 一键启动 Jupyter Notebook/Lab 环境
  • 数据卷挂载:持久化 notebooksdata 目录,数据不随容器丢失
  • 预装常用数据科学库(pandasnumpymatplotlibseaborn
  • 提供示例数据和欢迎笔记本
  • 支持中文界面(已安装 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

使用指南

功能MakeDocker Compose说明
构建镜像make builddocker compose build --no-cache强制重新构建镜像(不使用缓存)
启动服务make alldocker compose up -d --build构建镜像并启动服务,访问 http://127.0.0.1:8888/lab(无 token)
启动容器make updocker compose up -d --build启动容器(如果镜像已存在则使用缓存)
关闭服务make downdocker compose down停止并移除容器
重启服务make restartdocker compose down && docker compose up -d重启容器
查看日志make logsdocker compose logs -f实时查看容器日志(-f 跟随输出)
进入容器make bashdocker compose exec jupyter bash进入容器的交互式 Shell
查看状态make statusdocker compose ps查看当前项目容器状态

常见问题

  1. 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 即可。

    bash
    docker 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
  2. Jupyter Notebook 里无法显示中文?

    菜单栏 Settings -> Language -> Chinese (Simplified) 中文简体,然后对话框选择 Change and load 即可。

参考资料