迁移外部镜像至租户镜像仓库
本文描述如何借助启用「Docker 容器」功能的开发机,将用户已有镜像迁移到智算云平台的镜像中心。
前提条件
- 租户镜像仓库:租户已购买预付费资源(包两年/包年/包月/包周/包日)后,或已使用弹性资源创建开发机,可获得私有的租户镜像仓库。
- 镜像基础组件要求:开发机依赖
sudo
、ssh
等基础组件,如果您的自定义镜像中缺乏必要依赖,可能无法用于运行开发机。
公网推送镜像
无问芯穹 AIStudio 平台提供了灵活、便捷的上传镜像功能。用户可以通过 AIStudio 的镜像中心,轻松地将本地容器镜像上传到平台分配的 Docker 仓库,或者直接提交第三方仓库镜像 URL 导入镜像。
该方案较为方便,但需要经过公网推送镜像,实际推送速度受网络带宽影响。
从公网推送本地镜像
对于本地镜像,用户可以获取必要的凭证和 URL 来推送镜像;
在 AIStudio 的镜像中心,选择「上传镜像」,
在选择资源池的下拉列表中,每一行记录为一个可用区的所有资源池。选择一条记录后,表示镜像将上传到该可用区,如果使用该可用区的任何资源池创建开发机、任务、推理服务,均可使用该镜像。
选择命令行上传,并获取凭证和 URL。按照顺序执行 docker 命令即可。
从公网镜像仓库导入镜像
对于存放在用户自建镜像仓库或第三方镜像仓库的远程镜像,只需填写相关 URL 和凭证信息即可。
在 AIStudio 的镜像中心,选择「上传镜像」,
在选择资源池的下拉列表中,每一行记录为一个可用区的所有资源池。选择一条记录后,表示镜像将上传到该可用区,如果使用该可用区的任何资源池创建开发机、任务、推理服务,均可使用该镜像。
选择 URL 上传,并填写镜像 URL。如需认证,务必填写凭证信息。
WARNING
如果使用自建镜像仓库 URL 或第三方镜像仓库 URL,请确保可从国内公网访问。
内网推送镜像
用户可以将本地的容器镜像 tar 文件上传到 AIStudio 平台上的开发机。通过简单的 Docker 命令,如 load、tag 和 push,用户能够在开发机内将镜像推送到 AIStudio 提供的 Docker 仓库中。
迁移的主要流程:
- 创建启用「Docker 容器」功能的开发机。
- 在开发机上准备用户镜像,可上传镜像文件开发机,或从指定的外部镜像仓库拉取到开发机。
- 推送到租户镜像仓库。
该方案需要提前上传容器镜像 tar 文件,但好处是 docker push
发生在集群内网中,无需经过公网,因此速度较快。
Step 0 创建开发机
创建开发机,并打开「Docker 容器」功能。
如需帮助,参见 Docker 功能。
Step 1 准备待迁移镜像
如果已有镜像 tar 包,可考虑以下步骤本地传输镜像文件至在开发机或共享存储中:
也可考虑直接从外部镜像仓库拉取到开发机,要求外部镜像仓库支持公网访问。
Step 2 推送至租户镜像仓库
登录打开了 Docker 容器功能的开发机(开发机会默认登录您租户的镜像仓库),按照以下步骤操作:
如果要将 Docker 镜像 tar 包推送到镜像仓库,需要先加载镜像。使用
docker load
命令加载镜像:bashdocker load -i <image_name>.tar
标记镜像: 镜像需要标记仓库路径(查看镜像仓库地址)和标签,请使用
docker tag
:格式:
bashdocker tag <loaded_image_name>:<version> <repository>/<image_name>:<version>
示例:
bashdocker tag sd-webui:v1.1-1 cr.infini-ai.com/te-d397fngp1xye2h3q/sd-webui:v1.1-1
推送镜像: 使用
docker push
将镜像推送到仓库:格式:
bash# 开发机内默认登录租户镜像,无需再次 docker login docker push <repository>/<image_name>:<version>
示例:
bashdocker push cr.infini-ai.com/te-d397fngp1xye2h3q/sd-webui:v1.1-1
Step 3 查看结果
构建完成后,您可以访问镜像中心,在自定义镜像标签页中查看您的镜像。
NOTE
如果您所属租户在不同可用区均购买了资源,请注意租户在不同可用区的镜像仓库的存储网络相互隔离,暂不支持同步(但共用同一个内网地址)。例如,可用区 A 向 cr.infini-ai.com/te-b914754427352251
推送镜像,平台自动映射到可用区 A 的镜像仓库,可用区 B 无法使用该镜像。