基于现有开发机构建自定义镜像
基于现有开发机 适合在开发机内已经手工安装好软件、调试好环境之后,直接把当前系统盘(容器内的 / 文件系统)保存为新的自定义镜像。
常见做法是先用预置镜像创建开发机,再通过 Web Terminal 或 SSH 登录开发机安装依赖、调试环境,最后把这台开发机保存为镜像,用于开发机、任务、推理服务或平台中其他使用容器镜像的服务。这适合把已经调试通过的环境快速沉淀下来,也符合很多用户现有的使用习惯。
如果镜像会长期维护、多人协作使用,或需要清楚记录每一步安装和配置过程,建议考虑基于现有镜像构建自定义镜像或基于 Dockerfile 构建自定义镜像。无论使用哪种方式,保存前都建议清理无用文件、确认目标服务范围,并先在目标服务中做小范围验证。
先确认只需要复用系统盘环境
保存开发机为镜像不是克隆一台正在运行的开发机。平台会导出当前开发机的系统盘(容器内的 / 文件系统,也称 rootfs),并把系统盘中的软件、配置和文件系统变更保存为新的自定义镜像。
适合写入镜像的内容包括:
- 系统盘中的软件、系统配置、工具链和库文件。
- 系统盘中的新增、修改和删除。例如,您删除了基础镜像中不需要的文件后,使用新镜像创建开发机时,这些文件也应保持删除状态。
- 通过包管理器、源码编译、脚本安装等方式写入系统盘的依赖与工具。
不会写入镜像的内容包括:
- 开发机挂载的高性能共享存储中的数据。
开发机挂载的云盘中的数据不会写入镜像。
如果您想复用数据文件,请把数据放在共享高性能存储或云盘中,再在新开发机中挂载同一份存储。不要把大型数据集、模型权重或团队共享文件放进镜像里当作“克隆数据”的方式,否则会让镜像变大、构建变慢,也不利于后续多人复用。
警告
- 仅支持选择正在运行中的开发机。
- 构建过程中请不要关机。
- 如果开发机当前使用按量计费算力资源,在构建期间保持运行会继续产生对应资源费用。
准备要保存的系统盘状态
在开始构建前,建议先把开发机整理到适合保存为镜像的状态,再执行构建。
停止活跃读写操作
请停止训练任务、下载任务、日志刷写、数据库写入或其他密集读写操作。平台保存的是构建过程中捕获到的系统盘文件系统状态;如果文件仍在变化,新镜像中可能出现文件缺失、依赖安装不完整、配置未写完等不一致状态,也会增加构建失败风险。
清理临时文件和缓存
建议在构建前清理不需要长期保留的内容,避免镜像过大、构建变慢或影响后续启动速度。适合清理的内容包括:
- 临时下载文件
- 包管理器缓存,例如 pip、Conda、apt 等缓存目录
~/.cache、/root/.cache等通用缓存目录- 构建过程留下的大型中间文件
- 源码编译目录、安装包、解压后的临时目录
- 仅用于一次性排障的调试文件
确认新增、修改和删除符合预期
请在构建前确认系统盘中的软件、配置和用户环境已经处于您希望复用的状态。镜像构建完成后,后续新实例会从这个文件系统状态开始启动。
如果您删除了基础镜像中不需要的文件或目录,新镜像中也会保留这个删除结果。删除缓存、临时文件、安装包等无用内容通常有助于控制镜像大小;但不建议依赖手工删除来“瘦身”一个很大的基础镜像,因为被删除内容可能仍然存在于基础镜像层中。需要长期维护、审查或稳定复现的环境,优先改用基于 Dockerfile 构建自定义镜像。
在镜像中心提交构建任务
提交构建任务时,请先选择要保存的开发机,再设置镜像的可见范围和 排除路径。
选择正在运行的开发机
- 进入镜像中心,切换到 自定义镜像 标签页,点击 构建镜像。
- 在 构建方式 中选择 基于现有开发机。
- 在下拉列表中,选择一个当前处于运行中状态的开发机。
如果列表中没有可选开发机,请先确认目标开发机已经启动,并且位于当前可用区。
设置名称、可用服务和可用区
填写镜像名称和 Tag 时,建议带上版本信息,例如环境日期、框架版本或用途标记,方便后续区分不同快照。
请同时确认 可用服务 和 可用区 符合后续使用场景。如果可用服务或可用区选择不正确,创建或改配开发机时可能无法选择该镜像。镜像不会跨可用区自动同步,详见镜像仓库地址与可用区。
如果保存镜像是为了后续用于开发机、任务、推理服务或其他服务,请在构建时勾选对应服务;否则镜像构建成功后,也可能不会出现在目标服务的镜像选择列表中。
排除不应进入镜像的路径
如果某些路径中的数据不应被带入新镜像,可在构建时填写 排除路径。
平台会自动排除 SSH 凭据等敏感路径。自定义镜像可能被团队成员或其他服务复用,如果您把访问密钥、Token、私有配置文件等敏感信息保存到了其他路径,请在构建前删除,或通过排除路径排除。
适合排除的内容通常包括:
- 明显的临时目录
- 不需要随环境复用的大型缓存目录
- 仅当前开发机使用的中间产物
- 已下载但不希望固化到镜像中的模型、数据集或安装包
- 不应随镜像共享的访问凭据、Token 或私有配置文件
不建议排除仍需复用的运行环境或启动相关路径,例如:
- 启动脚本和服务管理脚本
- 仍需保留的 Python、Conda 或业务运行时环境
- 后续实例启动时必须存在的业务代码目录
如果不确定是否应排除,建议先保守处理,只排除明确无用或明确不应进入镜像的路径。错误排除关键路径可能导致新镜像启动失败,或导致预期的软件、配置和文件缺失。
启动构建
确认开发机状态、镜像信息和 排除路径 后,即可启动构建。
构建开始后,平台会导出当前开发机的系统盘文件系统状态,并保存为新的自定义镜像。
构建失败时检查日志和环境状态
构建开始后,镜像会出现在 自定义镜像 标签页中。点击列表中的 构建日志,即可查看完整日志。
如果构建失败,建议优先检查:
- 构建过程中是否仍有活跃读写操作。
- 开发机系统盘中是否存在过大的无用数据。
- 是否填写了错误的排除路径,导致关键内容缺失。
构建后验证新镜像
镜像状态变为 构建成功 后,建议先做一次小范围验证:
- 用新镜像创建一个测试开发机。
- 检查环境中的关键软件、配置文件、用户目录内容是否符合预期。
- 如果构建前删除过基础镜像中的文件,请确认这些文件没有在测试开发机中再次出现。
- 确认共享高性能存储和云盘中的数据不会出现在镜像系统盘中;如需复用这些数据,请在新开发机中重新挂载对应存储。
- 验证 SSH 登录、启动速度和基础命令是否正常。
- 确认无误后,再将该镜像用于更多开发机或团队环境。
需要可重复维护时改用其他构建方式
保存开发机为镜像适合把已经调试好的环境快速沉淀下来,尤其适合探索、验证和临时复用。它的不足是会把当前系统盘结果保存进镜像,而不是记录完整的安装过程;如果开发机中积累了较多依赖、缓存或临时文件,保存出的镜像可能较大,也不容易看出具体包含了哪些改动。
如果这份环境会频繁更新、需要团队共同维护,或需要在不同服务中长期复用,建议把关键安装和配置过程沉淀到镜像构建步骤中。这样更容易控制镜像大小、审查变更、比较版本差异,也更容易重新构建同一环境。
改用基于现有镜像构建
如果您已经知道需要安装哪些软件和配置哪些文件,并希望长期维护一份可重复执行的构建步骤,推荐改用基于现有镜像构建自定义镜像。
改用 Dockerfile 构建
如果您希望把镜像构建过程完整写成一份可审查、可版本控制、可长期维护的定义文件,推荐改用基于 Dockerfile 构建自定义镜像。