跳转到主要内容
自定义镜像用于沉淀自有运行环境。当内置镜像不满足框架版本、系统依赖、Python 包或工具链要求时,您可以基于已有镜像、Dockerfile、第三方镜像仓库或已构建镜像创建自定义镜像。构建完成后,自定义镜像可在开发环境、训练任务和推理服务中选择使用。

镜像命名与 URL

自定义镜像通常通过名称、版本和提交 ID 区分不同迭代。镜像 URL 由镜像仓库地址、项目名称、镜像名称、版本和提交 ID 组成:
同一名称和版本下可以有多个标签版本。创建开发环境、训练任务或推理服务时,通常按镜像名称和版本选择镜像;如果同一版本存在多个标签,以当前页面实际选择和展示的镜像 URL 为准。
用于正式训练、推理或团队复用的镜像,建议使用独立版本号或提交 ID 标识来源,避免只依赖 latest 进行复现或回滚。条件允许时,可在团队内部记录镜像 digest、代码提交和关键依赖版本,便于问题追溯。

创建自定义镜像

构建镜像会消耗实例资源。创建前,请确认当前区域和集群有可用的构建资源,并关注镜像仓库存储用量。若镜像后续需要在多个集群使用,请在创建或构建完成后配置镜像同步。
  • 构建前建议先明确镜像用途、框架版本、依赖版本和目标运行集群。GPU 场景还需要确认实例硬件、CUDA 版本、框架版本和基础镜像是否兼容。
  • 使用第三方或私有镜像仓库时,请使用可信来源。
  • 需要仓库凭据时,只授予完成拉取或导入所需的最小权限。

1. 进入创建页

  1. 进入 镜像管理 > 自定义镜像。
  2. 在 可用镜像列表 页签,单击 新建。

2. 填写配置信息

基本信息

运行信息

编译配置

先选择编译方法,再填写对应的构建配置。 不要将长期密钥写入 Dockerfile、普通构建参数或安装命令。即使后续删除文件或命令,敏感内容也可能留在镜像层、构建历史或日志中。
基于已有镜像适合在内置镜像或已有自定义镜像上补充依赖。apt.txt 和 pip.txt 是文本文件,每行填写一个依赖项。依赖安装方式需要与基础镜像匹配。apt 通常适用于 Ubuntu 系统依赖,yum 通常适用于 CentOS 系统依赖;pip2 和 pip3 分别对应 Python 2 和 Python 3 依赖。
  • apt.txt 示例:
  • pip.txt 示例:

3. 提交创建

配置完成后,单击 新建 提交构建任务。 提交后,您可以在 构建任务列表 中查看构建状态和构建日志。构建成功后,镜像会出现在 可用镜像列表 中。

从开发环境保存镜像

您也可以将开发环境保存为自定义镜像。该操作适合在开发环境中安装软件、调试依赖后,将当前容器文件系统沉淀为可复用镜像。

1. 确认保存内容

保存镜像前,请确认需要复用的依赖、工具和配置已经写入容器文件系统。保存镜像不包含挂载卷备份或进程内存;仅存在于挂载卷中的代码、模型、数据和训练结果仍由原存储保存,后续使用时需要重新挂载对应存储。 保存前,请清理不应进入镜像的凭据、临时 Token 和其他敏感内容。长期维护的环境,建议同时保留 Dockerfile 或依赖清单,避免只依赖一次保存结果。

2. 提交保存镜像

保持开发环境运行,使用开发环境页面提供的 保存镜像 入口,填写镜像名称、版本和构建信息后提交。 保存期间,开发环境可能暂时不可用。建议在无交互操作时执行,并避免停止、删除、重调度源环境,或同时大量修改依赖。 具体入口和操作,请参见 使用 JupyterLab 开发环境或使用 VSCS 开发环境。

3. 确认保存结果

提交后,在 构建任务列表 中确认构建成功。保存失败时,查看构建日志,优先检查容器大小、构建资源、依赖文件和源环境状态。 保存成功后,建议使用新开发环境或小规模负载验证关键依赖,而不是只在原开发环境中确认。

查看构建结果

构建任务提交后,在 构建任务列表 中查看状态。构建失败时,优先查看构建日志中的报错,再结合调度信息判断是依赖安装、Dockerfile、镜像拉取、资源调度还是同步配置导致失败。

常见问题

查看构建资源、资源池可用量、用户剩余额度和调度信息。构建等待资源时,不建议重复提交相同名称和版本的任务。
先查看 编译日志 中的报错,再结合调度信息判断失败阶段。常见情况包括依赖安装失败、Dockerfile 文件路径错误、基础镜像拉取失败、命令执行失败或构建资源不足。
检查包名称、版本、安装源和基础环境兼容性。需要固定依赖版本时,建议在 Dockerfile 或依赖文件中明确声明,避免构建时拉取到不兼容版本。
检查构建输入、工作目录和文件引用路径。Dockerfile 中引用的文件需要位于本次构建上下文中。
检查源仓库地址、认证信息、网络访问和目标仓库错误。私有仓库凭据只授予完成拉取或导入所需的最小权限。
回到 可用镜像列表 确认镜像所在区域、目标集群 URL、分享项目组和筛选条件是否符合预期;跨集群使用时,还需要确认同步任务已完成。
如果问题需要提交给技术支持团队,请提供镜像名称和版本、区域和集群、构建任务 ID、异常阶段以及脱敏后的错误日志,不要发送仓库账号、密码或 Token。

后续操作