在 Notebook 中使用 Docker 功能¶
在 Notebook 中使用 Docker 功能,可以将实验环境、依赖配置与计算过程进行统一封装,使 Notebook 不再依赖本地环境差异。
通过 Docker,Notebook 能够在不同节点、不同平台之间保持一致的运行行为,便于复现实验结果、共享分析过程,并与生产环境更好地对齐,尤其适用于数据分析、机器学习和模型验证等场景。
本文简要说明如何在 Notebook 实例中启用、验证和使用 Docker 功能,还列出了一些 Docker 高级功能和常见的故障排查案例。
启用 Docker¶
前提条件¶
参阅管理 Helm 应用安装所需插件。
启用 Docker 功能¶
-
登录 AI Lab 平台,进入 Notebook 界面,点击 创建 按钮。
更新操作
若要在已创建的实例中打开 docker ,则先点击对应实例右侧的 ⁝ 按钮,然后选择 更新.
-
在创建 Notebook 界面中填写基本信息后,点击 下一步。
-
完成资源配置后,点击 下一步。
-
在高级配置中,勾选 启用 Docker 选项,点击 确定。
-
创建完成后,返回 Notebook 列表页面。

-
当 Notebook 实例状态由 等待中 变为 运行中 时,表示实例已成功启动。如一直在 等待中 ,请刷新页面。
-
此时,实例右侧的 打开 列的图标处于黑色可点击状态。点击该图标,进入对应的 Notebook 实例。
验证 Docker 功能是否可用¶
在 Notebook 的终端环境中,可通过执行以下命令验证 Docker 环境是否已成功启用。
# 查看正在运行的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 查看指定容器的详细信息(将 <container_name> 替换为实际容器名或容器 ID)
docker inspect <container_name>
若命令可正常执行,并返回 Docker 容器列表信息(即使列表为空),则表示 Docker 服务已正常启动。
若提示 Docker 命令不存在或无法连接 Docker daemon,请确认 Docker 已被正确启用。
基本容器管理¶
Docker 功能提供完整的容器生命周期管理能力,支持容器的创建、启动、停止、删除等基本操作。
创建和运行容器¶
使用 docker run 命令创建并启动容器:
# 基本语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 运行一个简单的 Ubuntu 容器
docker run -it ubuntu:20.04 /bin/bash
# 后台运行容器
docker run -d --name my-app nginx:latest
# 指定端口映射
docker run -d -p 8080:80 --name web-server nginx:latest
| 参数 | 说明 |
|---|---|
-d |
后台运行容器 |
-it |
交互式运行,分配伪终端 |
--name |
指定容器名称 |
-p |
端口映射,格式为 宿主机端口:容器端口 |
-v |
挂载数据卷 |
管理容器¶
查看容器状态:
启动和停止容器:
# 启动已停止的容器
docker start <container_name>
# 停止运行中的容器
docker stop <container_name>
# 重启容器
docker restart <container_name>
进入容器¶
进入正在运行的容器:
# 进入容器的交互式终端
docker exec -it <container_name> /bin/bash
# 查看某个容器内的所有文件
docker exec <container_name> ls -la /app
Tip
建议使用 docker exec 而不是 docker attach 来进入容器,因为 exec 会创建新的进程,退出时不会影响容器的运行状态。
挂载存储¶
Notebook 可以挂载 PVC 或通过数据空间实现数据的持久化存储,其挂载路径可以关联到 Docker,从而实现容器间的数据共享和数据的持久化存储。
镜像制作¶
Docker 功能支持多种方式制作和保存自定义镜像,满足不同场景的需求。
docker build¶
使用 Dockerfile 构建镜像是最常用的方式:
# 基本构建命令
docker build -t my-app:latest .
# 指定 Dockerfile 路径
docker build -f /path/to/Dockerfile -t my-app:v1.0 .
docker save¶
将镜像导出为 tar 文件:
导出的镜像可以通过 docker load 命令导入:
使用 GPU¶
在 Notebook 中启用 Docker 功能后,可以将 GPU 资源挂载到容器中,为 AI 训练和推理提供硬件加速能力。
先挂载 GPU¶
使用 --gpus 参数将 GPU 挂载到容器:
# 挂载所有 GPU
docker run --gpus all -it pytorch/pytorch:latest python
# 挂载指定数量的 GPU
docker run --gpus 2 -it tensorflow/tensorflow:latest-gpu python
# 挂载指定的 GPU
docker run --gpus device=0 -it nvidia/cuda:11.8-devel-ubuntu20.04
支持哪些 GPU¶
Notebook 支持多种 GPU,详情见GPU 支持矩阵
网络配置¶
Docker 容器可以通过多种网络模式与宿主机和外部网络进行通信。
端口映射¶
将容器端口映射到宿主机端口,实现外部访问:
# 映射单个端口
docker run -d -p 8080:80 --name web-app nginx:latest
# 映射多个端口
docker run -d \ -p 8080:80 \ -p 8443:443 \ --name web-server nginx:latest
# 映射到指定 IP
docker run -d -p 127.0.0.1:8080:80 --name local-app nginx:latest
# 映射随机端口
docker run -d -P --name random-port nginx:latest
高级功能¶
Notebook 的 Docker 功能支持 buildx 和 Compose 等高级工具,满足复杂场景下的容器化开发需求。
Docker buildx¶
Docker buildx 是 Docker 的扩展构建功能,支持多平台构建和高级构建特性。
基本用法¶
# 查看 buildx 版本
docker buildx version
# 查看可用的构建器
docker buildx ls
# 创建新的构建器
docker buildx create --name mybuilder --use
# 启动构建器
docker buildx inspect --bootstrap
多平台构建¶
# 构建多平台镜像
docker buildx build --platform linux/amd64,linux/arm64 -t my-app:latest .
# 构建并推送到仓库
docker buildx build --platform linux/amd64,linux/arm64 -t my-app:latest --push .
# 构建特定平台
docker buildx build --platform linux/amd64 -t my-app:amd64 .
Docker Compose¶
Docker Compose 用于定义和运行多容器应用程序。
安装和基本用法¶
# 检查 Compose 版本
docker compose version
# 启动服务
docker compose up -d
# 查看服务状态
docker compose ps
# 停止服务
docker compose down
# 查看日志
docker compose logs
访问镜像仓库¶
Notebook 的 Docker 功能支持访问镜像仓库以及其他公有和私有镜像仓库。
镜像仓库¶
本平台提供内置的镜像仓库服务,用户可以存储和管理自定义镜像。
访问仓库¶
# 查看仓库地址(示例)
# 实际地址请参考平台提供的 _*我的镜像*_ 中仓库信息
REGISTRY_URL="harbor.io"
# 拉取镜像
docker pull ${REGISTRY_URL}/my-namespace/my-app:latest
# 推送镜像
docker push ${REGISTRY_URL}/my-namespace/my-app:latest
认证配置¶
Note
当前版本暂不支持自动注入用户名和密码,需要手动配置认证信息。
手动配置认证:
# 登录到 AI Lab 镜像仓库
docker login registry.io -u <your-username>
# 输入密码
Password: <your-password>
# 验证登录状态
docker info | grep -A 5 "Registry Mirrors"
故障排查¶
常见问题及解决方法:
-
容器启动失败
-
端口访问问题
-
GPU 不可用
重要提醒
- Notebook 关机时,运行中的 Docker 容器会被停止
- 重启 Notebook 后,需要手动重启 Docker 容器
- 删除 Notebook 会同时删除所有 Docker 容器和未持久化的数据
最佳实践
- 使用 Docker Compose 管理复杂的多容器应用
- 定期清理未使用的镜像和容器以节省存储空间
- 为生产环境的容器配置健康检查和重启策略
- 使用标准化的镜像命名和版本管理规范
通过合理使用 Notebook 的 Docker 功能,开发者可以构建灵活、高效的容器化开发和部署环境, 充分利用 AI Lab 平台的计算资源和存储能力。