
GPU-Jupyter:您的GPU加速JupyterLab,内置丰富的数据科学工具栈、TensorFlow和PyTorch,助力可复现的深度学习实验。
!https://github.com/iot-salzburg/gpu-jupyter/actions/workflows/default.yml/badge.svg
!https://raw.githubusercontent.com/iot-salzburg/gpu-jupyter/master/extra/jupyterlab-overview.png
GPU-Jupyter 是一个基于 NVIDIA CUDA Docker 镜像和流行的 https://github.com/jupyter/docker-stacks 构建的 GPU 可用环境。该工具栈支持在 Jupyter 笔记本中进行 GPU 计算,同时通过容器和版本化标签确保实验的可复现性。通过对源代码进行版本控制、使用带标签的数据空间、为随机函数设置种子以及使用本文档提供的带标签环境,该解决方案使研究人员能够开展高度复杂且完全可复现、可共享的大数据实验。
有关如何使用 GPU-Jupyter 通过单个命令实现深度学习研究可复现性的示例,请访问 https://github.com/iot-salzburg/reproducible-research-with-gpu-jupyter%E3%80%82%E6%9C%AC%E4%BB%93%E5%BA%93%E7%9A%84%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8 https://hub.docker.com/r/cschranz/gpu-jupyter 获取。
v1.9_cuda-12.6_ubuntu-24.04)确保实验环境一致性。前置条件
若输出类似以下内容,则表示配置成功(需注意 CUDA 版本与本地驱动兼容性,建议 NVIDIA 驱动版本 ≥ 520):bashdocker run --rm --gpus all nvidia/cuda:12.6.3-cudnn-runtime-ubuntu24.04 nvidia-smi
Fri Feb 28 13:13:06 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 560.35.04 Driver Version: 561.17 CUDA Version: 12.6 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 3060 ... On | 00000000:01:00.0 On | N/A | | N/A 46C P8 11W / 60W | 223MiB / 6144MiB | 15% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+
拉取并运行镜像
进入工作目录并创建数据文件夹(默认挂载路径):
bashcd your-working-directory mkdir -p data # 宿主机数据目录,将与容器共享
启动 GPU-Jupyter 容器:
bashdocker run --gpus all -d -it -p 8848:8888 \ -v $(pwd)/data:/home/jovyan/work \ -e GRANT_SUDO=yes \ -e JUPYTER_ENABLE_LAB=yes \ --user root \ cschranz/gpu-jupyter:v1.9_cuda-12.6_ubuntu-24.04
--gpus all:启用所有 GPU-p 8848:8888:端口映射(宿主机:容器)-v $(pwd)/data:/home/jovyan/work:挂载数据卷(宿主机数据目录 → 容器工作目录)-e GRANT_SUDO=yes:允许 root 用户执行 sudo-e JUPYTER_ENABLE_LAB=yes:启动 JupyterLab(而非传统 Notebook)--user root:以 root 用户运行容器获取登录令牌:
bashdocker exec -it [容器ID/名称] jupyter server list
输出示例:
[JupyterServerListApp] Currently running servers: [JupyterServerListApp] http://791003a731e1:8888/?token=5b96bb15be315ccb24643ea368a52cc0ba13657fbc29e409 :: /home/jovyan
复制令牌,在浏览器访问 http://localhost:8848 并粘贴令牌登录。登录后可在 http://localhost:8848/login 设置密码(原默认密码 gpu-jupyter)。
可用镜像标签
Docker Hub 提供以下镜像变体(以 v1.9 为例):
v1.9_cuda-12.6_ubuntu-24.04:全功能版(含 Python/R/Julia 及完整工具栈)v1.9_cuda-12.6_ubuntu-24.04_python-only:仅含 Python 解释器(无 R/Julia)v1.9_cuda-12.6_ubuntu-24.04_slim:精简版(仅 Python,无额外工具包)其他版本(如 v1.8_cuda-12.5_ubuntu-22.04、v1.7_cuda-12.3_ubuntu-22.04 等)及旧版本标签见 https://hub.docker.com/r/cschranz/gpu-jupyter/tags%E3%80%82
v1.5_cuda-12.0_ubuntu-22.04 系列v1.4_cuda-11.6_ubuntu-20.04 系列v1.4_cuda-11.2_ubuntu-20.04 系列v1.4_cuda-10.1_ubuntu-18.04 系列如需自定义工具包或适配特定 GPU 架构,建议构建自定义镜像:
步骤
克隆仓库并切换版本分支:
bashgit clone https://github.com/iot-salzburg/gpu-jupyter.git cd gpu-jupyter git checkout v1.9_cuda-12.6_ubuntu-24.04 # 选择或创建版本分支
生成 Dockerfile(支持自定义参数,见 配置说明):
bash# 生成仅含 Python 的 Dockerfile(不含 Julia 和 R) ./generate-Dockerfile.sh --python-only
构建镜像:
bashdocker build -t gpu-jupyter .build/ # 耗时较长,需耐心等待
启动自定义容器:
bashdocker run --gpus all -d -it -p 8848:8888 \ -v $(pwd)/data:/home/jovyan/work \ -e GRANT_SUDO=yes \ -e JUPYTER_ENABLE_LAB=yes \ -e NB_UID="$(id -u)" \ # 同步宿主机用户 UID(避免权限问题) -e NB_GID="$(id -g)" \ # 同步宿主机用户 GID --user root \ --restart always \ # 容器异常时自动重启 --name gpu-jupyter_1 \ # 指定容器名称 gpu-jupyter
使用 Docker Compose 启动
创建 docker-compose.yml(参考仓库示例):
yamlversion: '3.8' services: gpu-jupyter: build: .build/ ports: - "8848:8888" volumes: - ./data:/home/jovyan/work environment: - GRANT_SUDO=yes - JUPYTER_ENABLE_LAB=yes - NB_UID=${UID} - NB_GID=${GID} user: root deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] restart: always
启动服务:
bashdocker-compose up --build -d # 构建并后台运行 docker-compose ps # 检查状态 docker-compose logs -f # 查看日志 docker-compose down # 停止服务
注意:需 Docker Compose 版本 ≥ 1.28.0 以支持 GPU 资源配置。
查看运行中容器:
bashdocker ps # 查看运行中容器(加 -a 查看所有容器)
查看容器资源占用:
bashdocker stats # 实时监控 CPU/内存/网络/磁盘使用
查看容器日志:
bashdocker logs [容器ID/名称] -f # -f 实时跟踪日志
进入容器终端:
bashdocker exec -it [容器ID/名称] bash # 交互式终端
停止并删除容器:
bashdocker rm -f [容器ID/名称]
Dockerfile 生成参数
generate-Dockerfile.sh 脚本用于生成自定义 Dockerfile,支持以下参数(互斥,每次仅选一个):
| 参数 | 说明 |
|---|---|
--help | 显示帮助信息 |
--slim | 精简版:仅含 Python 解释器,不含 R/Julia 及 custom/usefulpackages.Dockerfile 中的工具包 |
--python-only | Python 专用版:不含 R/Julia,但包含 custom/usefulpackages.Dockerfile 工具包 |
--no-useful-packages | 基础版:含 R/Julia,但不含 custom/usefulpackages.Dockerfile 工具包 |
| `-p | --password [密码]` |
| `-c | --commit [commit ID]` |
环境变量
| 环境变量 | 说明 | 默认值/示例 |
|---|---|---|
GRANT_SUDO | 是否允许 sudo 权限 | no(建议设为 yes) |
JUPYTER_ENABLE_LAB | 是否启动 JupyterLab | yes |
JUPYTER_TOKEN | 静态登录令牌(UUID 格式,避免容器重启后令牌变更) | 自动生成(通过 uuidgen 生成自定义令牌) |
NB_UID | 容器内用户 UID(需与宿主机一致以解决文件权限问题) | 1000 |
NB_GID | 容器内用户 GID | 1000 |
自定义工具包安装
避免直接修改 .build/Dockerfile(每次生成会覆盖),建议通过以下方式添加自定义包:
custom/usefulpackages.Dockerfile,添加 apt/pip 安装命令:
dockerfile# 示例:安装额外 Python 包 RUN pip install --no-cache-dir \ "package1==x.y.z" \ "package2" # 安装系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ package3 \ && rm -rf /var/lib/apt/lists/*
bash./generate-Dockerfile.sh --python-only # 重新生成 docker build -t gpu-jupyter .build/ # 重新构建
授权配置
设置静态令牌
生成 UUID 令牌:
bashexport JUPYTER_TOKEN=$(uuidgen) echo $JUPYTER_TOKEN # 保存令牌备用
启动容器时传入令牌:
bashdocker run --gpus all -d -it -p 8848:8888 \ -e JUPYTER_TOKEN=${JUPYTER_TOKEN} \ ... # 其他参数
设置自定义密码
http://localhost:8848/login,使用令牌登录后设置新您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务