Skip to content

使用镜像 Tar 包导入镜像

将本地的容器镜像 Tar 包文件上传到 智算云平台上的极值算力实例,通过标准的 Docker 命令导入为镜像。

这种方式一般用于将用户的容器镜像 Tar 包导入为镜像中心的自定义镜像。主要流程:

  1. 确定镜像需要写入的目标可用区。
  2. 使用目标可用区的算力资源创建极值算力实例,并启用「Docker 容器」功能。
  3. 上传容器镜像 tar 文件至极值算力实例,通过 docker load 导入为镜像。
  4. 根据平台规范,执行 docker tag 添加镜像标签。
  5. 使用平台内部 Registry 域名,将镜像推送到当前实例所在可用区的租户镜像仓库。

环境要求

  • 要求极值算力实例已启用「Docker 容器」功能。
  • 强烈推荐先安装 buildx,因为它基于更先进的 BuildKit 引擎,能提供更快的构建速度、更强大的功能以及旧版构建器所不支持的多平台镜像构建能力。详见 BuildKit
    language-shell
    mkdir -p /usr/local/lib/docker/cli-plugins && curl -sSL https://ghfast.top/https://github.com/docker/buildx/releases/download/v0.29.1/buildx-v0.29.1.linux-amd64 -o /usr/local/lib/docker/cli-plugins/docker-buildx
    chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx

导入镜像 Tar 包

如果镜像尚未保存为本地 Tar 包,而是位于极值算力实例无法访问的外部 Registry,但本地设备可以访问该 Registry,则不必先在本地安装 Docker Engine。优先使用 crane 将镜像复制到目标可用区 Registry;只有目标主机无法访问任何可用的中转 Registry 时,才通过 SSH 将镜像临时导入该主机。对于大型镜像或不稳定连接,优先使用 Registry 复制并固定源摘要,以便失败后复用已经完成的镜像层;不要使用中断后必须从头传输的 SSH 流式管道。具体选择、命令和使用边界参见以下教程。

  1. 创建极值算力实例,并打开「Docker 容器」功能。

  2. 将镜像 Tar 包传输到极值算力实例或共享存储中。如果文件较大,建议先上传到共享高性能存储,或使用 SSH/SCP 方式直接传输到极值算力实例。

  3. 在极值算力实例中,使用 docker load 命令加载镜像:

    language-shell
    # 示例:加载 /tmp 目录下的 cuda-12.9-latest.tar
    docker load -i /tmp/cuda-12.9-latest.tar

    部分常见问题:

    • 文件未找到:请检查 tar 文件路径是否正确,使用 ls -lh /tmp/*.tar 确认文件存在。
    • 磁盘空间不足:加载大镜像需要足够的磁盘空间。使用 df -h 检查 /var/lib/docker 所在分区的剩余空间。
  4. 加载完成后,使用 docker images 查看镜像列表,确认镜像已存在:

    language-bash
    docker images | grep cuda

    预期输出示例:

    language-text
    REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
    cuda-12.9    latest    a1b2c3d4e5f6   2 days ago     1.5GB

终端录制

加载镜像 Tar 包并打标签

在演示库中打开

适用于从离线 tar 包恢复镜像,再推送到当前实例所在可用区或运行验证。

推送镜像至租户镜像仓库

在极值算力实例中使用平台内部 Registry 域名推送镜像时,目标是当前实例所在可用区。请通过已开启 Docker 容器 功能的极值算力实例执行以下操作。

警告

以下命令会把镜像写入当前实例所在可用区的 Registry。如果目标是其他可用区,请不要使用平台内部 Registry 域名;请改用镜像中心提供的目标可用区 Registry 公网访问地址和登录凭证。

完成 Registry 登录准备

直接使用平台预置凭证

平台已为 Docker CLI 配置当前可用区 Registry 的登录凭证。正常情况下,无需手动运行 docker login,可直接继续推送镜像。

如果已经执行过 docker logout cr.infini-ai.com,请重启极值算力实例,等待平台重新写入 Registry 凭证后再继续。

设置仓库路径并推送

  1. 使用租户 ID设置租户镜像仓库根路径。

    language-shell
    export TENANT_ID="te-b905754427352261"
    export CURRENT_ZONE_REPO_ROOT="cr.infini-ai.com/$TENANT_ID"
    echo "$CURRENT_ZONE_REPO_ROOT"

    示例输出:

    language-shell
    # 租户 ID 为 te-b905754427352261 的私有镜像仓库根路径
    cr.infini-ai.com/te-b905754427352261

    提示

    租户私有仓库的地址规则和凭证范围,参见镜像仓库地址与可用区

  2. 为镜像添加租户私有仓库路径和标签。

    language-bash
    # 已通过前述步骤获取当前可用区私有镜像仓库根路径 CURRENT_ZONE_REPO_ROOT
    docker tag cuda-12.9 $CURRENT_ZONE_REPO_ROOT/cuda-12.9
  3. 执行 docker push

    language-shell
    docker push $CURRENT_ZONE_REPO_ROOT/cuda-12.9

    常见问题:

    • 需要登录或权限拒绝 (Denied):先确认极值算力实例已开启 Docker 容器 功能,再返回完成 Registry 登录准备,按照本页显示的方式恢复或重新登录。
  4. 推送完成后,您可以检查命令输出,确保所有层都显示 Pushed。还可以访问镜像中心,在自定义镜像标签页中查看您的镜像。

信息

跨可用区推送镜像

不同可用区的镜像仓库相互独立,暂不支持自动同步。如果需要从可用区 A 的极值算力实例推送镜像至可用区 B,请获取可用区 B Registry 的公网访问地址与登录凭证。详见镜像仓库地址与可用区通过命令行推送镜像