本文詳細介紹基于Docker Compose的單機版JupyterHub部署方案,通過容器化技術實現多用戶Notebook環境的快速搭建。方案采用官方JupyterHub鏡像,配置11個端口映射(18000-18010)支持用戶并發,通過數據卷掛載(./data、./home)保障配置與用戶數據持久化。核心步驟包括:升級核心組件及安裝中文支持/Git集成等擴展;通過配置文件設定管理員權限與用戶白名單;結合Web控制臺與Linux命令實現用戶可視化管理和密碼初始化。該方案顯著降低多用戶協作環境運維成本,支持資源共享與隔離,適用于教學、科研及團隊開發場景,實測可穩定承載20+用戶并發。
一、環境要求
- 系統:Linux/Windows/macOS(需安裝 Docker)
- 依賴軟件:Docker 20.10+和Docker Compose 2.0+
- 網絡:開放端口 18000-18010(可通過防火墻配置)
二、部署步驟
1. 創建項目目錄
mkdir jupyterhub-deploy && cd jupyterhub-deploy
mkdir data home # 創建數據持久化目錄
2. 創建 Docker Compose 文件
創建 docker-compose.yml:
version: '3.5'
services:jupyterhub:image: jupyterhub/jupyterhub:latestrestart: alwaysports:- "18000:8000" # JupyterHub 主端口- "18001:8001" # 預留擴展端口- "18002:8002" # 預留擴展端口- "18003:8003" # 預留擴展端口- "18004:8004" # 預留擴展端口- "18005:8005" # 預留擴展端口- "18006:8006" # 預留擴展端口- "18007:8007" # 預留擴展端口- "18008:8008" # 預留擴展端口- "18009:8009" # 預留擴展端口- "18010:8010" # 預留擴展端口volumes:- ./data:/data # 配置持久化- ./home:/home # 用戶數據持久化
端口說明:
-
18000:Web 訪問端口
-
18001-18010:預留給 JupyterLab 的 Kernel 連接
3. 啟動容器
docker-compose up -d # 后臺啟動服務
4. 進入容器終端
docker-compose exec jupyterhub /bin/bash
5. 安裝基礎工具(在容器內執行)
apt-get update && \
apt-get install -y telnet iputils-ping nano git curl wget
6. 升級核心組件(在容器內執行)
pip install jupyterhub --upgrade -i https://mirrors.aliyun.com/pypi/simple
pip install notebook --upgrade -i https://mirrors.aliyun.com/pypi/simple
7. 安裝擴展插件
pip install jupyterlab-language-pack-zh-CN -i https://mirrors.aliyun.com/pypi/simple # 中文語言包
pip install jupyterlab-git -i https://mirrors.aliyun.com/pypi/simple # Git 集成
pip install xeus-python -i https://mirrors.aliyun.com/pypi/simple # 增強Python內核
pip install debugpy -i https://mirrors.aliyun.com/pypi/simple # 調試支持
pip install ipdb -i https://mirrors.aliyun.com/pypi/simple # 交互式調試
8. 生成配置文件
jupyterhub --generate-config -f /data/jupyterhub_config.py
ln -s /data/jupyterhub_config.py .
配置說明: 配置文件保存在主機 ./data 目錄,容器重啟不丟失
9. 修改配置文件
編輯 /data/jupyterhub_config.py:
c.JupyterHub.cookie_secret_file = "/data/jupyterhub_cookie_secret"
c.Authenticator.allowed_users = {"admin"} # 允許訪問的用戶
c.Authenticator.admin_users = {"admin"} # 管理員賬號
c.LocalAuthenticator.create_system_users = True
10. 創建管理員賬戶
adduser admin # 設置密碼(示例:123456),其他信息按回車跳過
11. 重啟服務
exit # 退出容器
docker-compose restart # 重啟容器
三、用戶管理
1. 添加新用戶
- 訪問 http://<服務器IP>:18000 用 admin 登錄
- 進入 File > Hub Control Panel > Admin > Add Users(輸入用戶名如 test)
2. 設置用戶密碼
docker-compose exec jupyterhub passwd test # 為 test 用戶設置密碼
四、訪問服務
- 管理員登錄:http://<服務器IP>:18000 → 用戶 admin + 密碼
- 工作區:登錄后自動進入 JupyterLab 環境
- 語言切換:Settings → Language → 簡體中文
五、維護命令
功能 | 命令 |
---|---|
啟動服務 | docker-compose up -d |
停止服務 | docker-compose down |
查看日志 | docker-compose logs -f |
六、故障排除
- 端口沖突:修改 docker-compose.yml 中的端口映射
- 登錄失敗:檢查 jupyterhub_config.py 中的用戶配置
- 插件未生效:在容器內重新執行 pip install 命令
- 數據持久化:確保主機目錄 ./home 和 ./data 有寫入權限