镜像
一站式 AI 平台(AIStudio)提供镜像服务,提供预置镜像,也可以方便地构建和管理自定义镜像。
预置镜像
平台预置了多种基础镜像。您可以直接使用这些预置镜像,也可基于预置镜像构建自定义镜像。
- CUDA: 来自 nvidia/cuda 镜像仓库
- NGC: 来自 NGC Pytorch 镜像仓库
- Pytorch:来自 pytorch/pytorch 镜像仓库
- Ubuntu: 来自 Ubuntu 官方的基础镜像
信息
当前租户已在平台上创建的自定义镜像,均会展示在自定义镜像标签页。详见构建镜像。
自定义镜像
非预置镜像均称为自定义镜像。租户的自定义镜像均保存在租户私有镜像仓库。
自定义镜像来源
- 在镜像中心直接构建,可基于现有镜像、基于 dockerfile 创建镜像,或直接保存运行中的开发机为镜像。详见构建自定义镜像。
- 如果您只是想在某个现有镜像基础上继续安装依赖、写入配置或补齐组件,推荐直接参考基于现有镜像构建自定义镜像。
- 如果您希望把镜像构建过程完整维护为一份 Dockerfile,推荐直接参考基于 Dockerfile 构建自定义镜像。
- 如果您希望直接保存当前开发机中已经调试好的环境,推荐直接参考基于现有开发机构建自定义镜像。
- 将外部镜像导入智算云平台的镜像中心,或将镜像迁移到其他可用区。外部镜像需要满足基础组件要求,才能在平台服务(开发机、任务、推理服务)中正常使用。详见导入或跨可用区迁移镜像。
使用范围
自定义镜像可以用于平台所有服务模块(开发机、任务、推理服务),也可限制为仅用于部分服务模块。
镜像的「可用服务」配置可用于限制镜像的使用范围。自定义镜像和预置镜像均带有该属性。
每个镜像可能适用于一种或多种服务:
- 开发机
- 任务
- 推理服务
信息
通过开发机自行上传的镜像默认适用于开发机、任务和推理服务。
租户镜像仓库
租户在可用区购买包年包月或弹性计算资源后,可从智算云平台的 Docker Registry 服务自动获得该可用区的私有租户镜像仓库服务,用于存放自定义镜像。
警告
cr.infini-ai.com 是平台内部 Registry 域名,各可用区的平台实例都使用这个相同的域名,但访问的是各自可用区中独立的 Registry。从可用区 A 的平台实例访问时,该域名连接到可用区 A 的 Registry;从可用区 B 的平台实例访问时,同一域名连接到可用区 B 的 Registry。
因此,即使完整镜像地址和 tag 相同,不同可用区中的镜像也相互独立,不会自动同步,并且可能对应不同的镜像摘要。完整镜像地址不会显示实际访问的是哪个可用区;请在镜像中心的自定义镜像列表中查看 可用区 列。
租户镜像仓库根路径
平台镜像服务以租户 ID 为 Docker Registry 上的命名空间。使用平台内部 Registry 域名构建的租户镜像仓库根路径格式为:
cr.infini-ai.com/<tenant_id>
示例:
cr.infini-ai.com/te-c7va2fg6uawxdzkf/
信息
使用该根路径时,访问目标是发起请求的实例所在可用区。要从平台外部导入镜像或向其他可用区迁移镜像,请使用目标可用区 Registry 公网访问地址。详见导入或跨可用区迁移镜像。
镜像地址结构
一个完整的镜像地址由以下部分组成:
cr.infini-ai.com/<tenant_id>/<image_name>:<image_tag>
| 部分 | 说明 |
|---|---|
cr.infini-ai.com | Registry (注册表)。平台内部 Registry 域名;在平台实例中连接到该实例所在可用区的 Registry。 |
<tenant_id> | Namespace (命名空间)。租户在平台 Docker Registry 上的专属隔离空间,与租户 ID 相同。 |
<image_name> | 通俗意义上的"镜像名称",例如具体的软件名称。 |
<image_tag> | 镜像的版本号。 |
示例:
cr.infini-ai.com/te-c7va2fg6uawxdzkf/vllm:latest
多可用区与镜像仓库地址
平台为租户在每个可用区提供独立的镜像存储。可用区之间不自动同步镜像,平台内部 Registry 域名也不能用于选择其他可用区。
详细的地址选择规则、相同地址在不同可用区中的含义、登录方式与凭证范围,以及跨可用区迁移步骤,参见镜像仓库地址与可用区。
存储空间
租户在每个可用区的镜像服务使用独立存储空间。符合条件的租户可免费享受一定容量的自定义镜像存储容量。
- 租户购买预付费资源(包年/包月/包日)后,可免费使用 200 GiB 的私有仓库存储空间。仅在租户资源所在可用区提供私有镜像仓库存储容量。
- 租户使用弹性资源创建开发机,可免费使用 100GiB 的私有仓库存储空间。仅在弹性资源所在可用区提供私有镜像仓库存储容量。
- 租户私有镜像仓库存储空间不会叠加。例如,租户在可用区 A 购买了预付费资源(包两年/包年/包月/包日),又选择了同可用区的弹性资源创建开发机,则租户镜像仓库存储空间依然为 200 GiB。
- 租户私有镜像仓库存储空间可自动升级。例如,租户选择了可用区 A 的弹性资源创建开发机,获得了 100GiB 的镜像仓库存储空间。随后在可用区 A 购买了预付费资源(包两年/包年/包月/包日),则租户镜像仓库存储空间升级为 200 GiB。
- 租户私有镜像仓库存储空间不会降级。例如,租户在可用区 A 已获得 200 GiB 的镜像仓库存储空间。租户在可用区 A 的预付费资源(包两年/包年/包月/包日)到期后,只要租户使用了同可用区的弹性资源开发机,可保有 200 GiB 的镜像仓库存储空间,不会降级为 100GiB。
- 租户在多个可用区均购买了计算资源,则平台将在每个可用区均享受独立的镜像仓库存储空间和免费容量。具体存储空间大小以上述规则为准。
- 租户在不同可用区的镜像仓库相互独立,暂不支持自动同步。即使两个可用区中显示的完整镜像地址和 tag 相同,也可能不存在相同镜像或对应不同镜像摘要。
回收策略
仅使用弹性资源的可用区
在一个可用区,如果仅使用弹性资源创建开发机,租户镜像仓库存储空间的回收策略如下:
拥有包年包月资源的可用区
在一个可用区,如果拥有包年包月资源,租户镜像仓库存储空间的回收策略如下:
包年包月资源到期但仍有弹性开发机的可用区
在一个可用区,如果包年包月资源到期时,租户仍拥有使用弹性资源创建的开发机,租户镜像仓库存储空间的回收策略如下:
警告
私有镜像仓库存储空间回收后,使用该私有镜像仓库中的自定义镜像的开发机将无法再次启动。
信息
上面未涉及的其他情况,租户私有镜像仓库存储空间将按照以上规则中算出的最晚日期回收。
添加自定义镜像
- 在镜像中心构建自定义镜像:通过网页操作,通过现有开发机、现有镜像、Dockerfile 构建自定义镜像,存储在租户镜像仓库中。
- 基于现有镜像构建自定义镜像:基于现有镜像执行 Shell 命令,安装依赖、写入配置并生成新的自定义镜像。
- 基于 Dockerfile 构建自定义镜像:通过 Dockerfile 明确定义镜像层、环境变量和启动命令,并在镜像中心完成构建。
- 基于现有开发机构建自定义镜像:直接把当前开发机的系统盘环境保存为新的自定义镜像。
- 导入或跨可用区迁移镜像:通过 URL 导入公网可访问的镜像,或使用目标可用区 Registry 公网访问地址执行
docker push。 - 在开发机内构建自定义镜像:借助开发机的「Docker 功能」,使用
docker buildx build/docker build在开发机构建自定义镜像,并推送至租户镜像仓库。
常见问题
如何查看当前可用区的租户私有仓库根路径?
「当前可用区」指当前实例(开发机、任务、推理服务等)所在的可用区。通过以下方式获取的是平台内部 Registry 根路径,不是公网访问地址。
方式一:自行拼接。平台镜像服务以租户 ID 为 Docker Registry 上的命名空间,格式为:
cr.infini-ai.com/<tenant_id>。在平台实例中使用时,该地址连接到当前实例所在可用区的 Registry。方式二:如果已存在自定义镜像,可访问镜像中心,查看现有的「自定义镜像」地址,从中获取命名空间。
方式三:开发机开启了 「Docker 容器」功能后,登录时展示的 SSH banner 中自动展示私有仓库根路径,格式为:
cr.infini-ai.com/<tenant_id>。 开启了 Docker 容器功能的开发机 SSH banner 示例:language-shell=============================INFINI-AI============================= 欢迎使用一站式AI平台开发机服务! ═══════════════════════════════════ PATH 类型 / 系统盘(上限50G) /mnt/public 共享高性能存储 ═══════════════════════════════════ ..... 3. 使用 docker 容器 push 镜像的地址为:cr.infini-ai.com/te-b914754427352251 ...... =================================================================== root@is-c7wciqfqgrvurpwo-devmachine-0:~$
我想使用当前可用区的租户私有镜像仓库服务,如何登录?
正常情况下无需手动登录
通过已开启 Docker 容器 功能的开发机访问当前可用区 Registry 时,平台已为 Docker CLI 配置登录凭证,可直接执行 docker pull 或 docker push。
如需确认凭证配置文件存在,可运行以下命令;不要直接输出文件内容:
test -s "${DOCKER_CONFIG:-/tmp/docker-config}/config.json" \
&& echo "Registry credential ready"如果已经执行过 docker logout cr.infini-ai.com,请重启开发机。重启后,平台会重新写入 Registry 凭证,无需手动运行 docker login。详细说明参见在开发机中访问镜像仓库。
如何获取公网可访问的镜像注册表 (Registry) 地址?
cr.infini-ai.com 是平台内部 Registry 域名,不是公网访问入口。如果需要从平台外部推送镜像,或从一个可用区向另一个可用区迁移镜像,请在镜像中心选择目标可用区,并使用页面提供的 Registry 公网访问地址和登录凭证。详见镜像仓库地址与可用区和导入或跨可用区迁移镜像。
可否通过远程仓库 URL 导入外部镜像?
支持。可以通过公网可访问的远程仓库 URL(支持账户密码验证)导入外部镜像为租户自定义镜像。参考导入或跨可用区迁移镜像。
可否直接上传本地镜像压缩包文件到镜像中心?
支持。在本地上传 tar 文件至开发机,导入后直接推送至镜像中心,参考导入或跨可用区迁移镜像。
可否从公网推送到租户镜像仓库?
支持。可使用目标可用区 Registry 公网访问地址,将本地镜像推送到租户镜像仓库。参考导入或跨可用区迁移镜像。
可否将开发机直接保存为镜像?
支持。您可以在开发机内安装必要软件,并保持开发机在运行中状态。前往镜像中心,通过构建镜像,选择当前运行中的开发机保存为镜像。使用前请务必阅读文档,并了解限制和注意事项。