2024-11-21 一站式 AI 平台生日大派对!2024-11-21 一站式 AI 平台生日大派对! 无问芯穹特别推出多项超值福利!立即参与
Skip to content

迁移外部镜像至租户镜像仓库

本文描述如何将用户已有镜像或第三方公开镜像迁移到智算云平台的镜像中心。

前提条件

  • 租户镜像仓库:租户已购买预付费资源(包两年/包年/包月/包周/包日)后,或已使用弹性资源创建开发机,可获得私有的租户镜像仓库。
  • 镜像基础组件要求:开发机依赖 sudossh 等基础组件,如果您的自定义镜像中缺乏必要依赖,可能无法用于运行开发机。

镜像基础组件要求

如果您的镜像用于开发机,推荐在镜像中包含平台要求的必要组件:

以 Ubuntu 为例:

shell
apt update && apt install openssh-server sudo runit runit-systemd -y

如果镜像中缺失上述组件,在启动开发机时平台会尝试安装,但仍可能安装失败导致开发机无法正常启动。

公网推送镜像

无问芯穹 AIStudio 平台提供了灵活、便捷的上传镜像功能,用户可以轻松地将本地镜像上传到租户私有镜像仓库,或者直接通过第三方仓库镜像 URL 将镜像导入租户私有镜像仓库。

该方案需要经过公网推送镜像,实际推送速度受网络带宽影响。

直接拉取公网镜像

对于存放在用户自建镜像仓库或第三方镜像仓库的远程镜像,只需填写相关 URL 和凭证信息即可。

WARNING

无论是自建镜像仓库 URL 或第三方镜像仓库 URL,请确保可从国内公网访问。如有登录认证,请提供正确的访问凭证。

  1. 在 AIStudio 的镜像中心,选择上传镜像,打开上传镜像弹窗。

  2. 在「选择资源池」的下拉列表中,选择一条记录后,表示镜像将上传到该可用区。如果使用该可用区的任何资源池创建开发机、任务、推理服务,均可使用该镜像。

    NOTE

    如果「选择资源池」的下拉列表有多行记录,每一行为一个可用区的所有资源池。选择一条记录后,表示镜像将上传到该可用区,单次仅能选择一个可用区。

  3. 选择 URL 上传,并填写镜像 URL。如需认证,务必填写凭证信息。

    alt text

从公网推送本地镜像

对于本地镜像,用户需要获取租户私有仓库地址和必要的凭证来推送镜像。

  1. 在 AIStudio 的镜像中心,选择「上传镜像」,

  2. 选择资源池的下拉列表中,每一行记录为一个可用区的所有资源池。选择一条记录后,表示镜像将上传到该可用区,如果使用该可用区的任何资源池创建开发机、任务、推理服务,均可使用该镜像。

  3. 选择命令行上传,并获取凭证和镜像仓库 URL。按照顺序执行 docker 命令即可。

    alt text

内网推送镜像

该方式需要借助启用 Docker 容器功能的开发机,将用户已有镜像推送到智算云平台的租户镜像仓库。

用户将本地的容器镜像 tar 文件上传到 AIStudio 平台上的开发机。通过简单的 Docker 命令,如 load、tag 和 push,用户能够在开发机内将镜像推送到 AIStudio 提供的 Docker 仓库中。

迁移的主要流程:

  1. 创建开发机,并启用「Docker 容器」功能。
  2. 在开发机上准备用户镜像,可上传镜像文件开发机,或从指定的外部镜像仓库拉取到开发机。
  3. 推送到租户镜像仓库。

该方案需要提前上传容器镜像 tar 文件,但好处是 docker push 发生在集群内网中,无需经过公网,因此速度较快。

Step 0 创建开发机

创建开发机,并打开「Docker 容器」功能。

alt text

如需帮助,参见 Docker 功能

Step 1 准备待迁移镜像

如果已有镜像 tar 包,可考虑以下步骤本地传输镜像文件至在开发机或共享存储中:

也可考虑直接从外部镜像仓库拉取到开发机,要求外部镜像仓库支持公网访问。

Step 2 推送至租户镜像仓库

登录打开了 Docker 容器功能的开发机(开发机会默认登录您租户的镜像仓库),按照以下步骤操作:

  1. 如果要将 Docker 镜像 tar 包推送到镜像仓库,需要先加载镜像。使用 docker load 命令加载镜像:

    bash
    docker load -i <image_name>.tar
  2. 标记镜像: 镜像需要标记仓库路径(查看镜像仓库地址)和标签,请使用 docker tag

    格式:

    bash
    # 使用 cr.infini-ai.com 拼接租户 ID 作为 <repository> 字段,该地址指向与开发机同可用区的镜像仓库
    docker tag <loaded_image_name>:<version> <repository>/<image_name>:<version>

    示例:

    bash
    # 使用 cr.infini-ai.com 拼接租户 ID 作为私有镜像仓库的地址,该地址指向与开发机同可用区的镜像仓库
    docker tag sd-webui:v1.1-1 cr.infini-ai.com/te-d397fngp1xye2h3q/sd-webui:v1.1-1
  3. 推送镜像: 开发机内已默认登录租户私有镜像仓库,无需执行 docker login。使用 docker push 将镜像推送到仓库:

    格式:

    bash
    docker push <repository>/<image_name>:<version>

    示例:

    bash
    # 开发机内已默认登录租户私有镜像仓库,无需再次 docker login
    docker push cr.infini-ai.com/te-d397fngp1xye2h3q/sd-webui:v1.1-1

Step 3 查看结果

构建完成后,您可以访问镜像中心,在自定义镜像标签页中查看您的镜像。

NOTE

如果您所属租户在不同可用区均购买了资源,请注意租户在不同可用区的镜像仓库的存储网络相互隔离,暂不支持同步(但共用同一个内网地址)。例如,可用区 A 向 cr.infini-ai.com/te-b914754427352251 推送镜像,平台自动映射到可用区 A 的镜像仓库,可用区 B 无法使用该镜像。