使用镜像 Tar 包导入镜像
将本地的容器镜像 Tar 包文件上传到 智算云平台上的极值算力实例,通过标准的 Docker 命令导入为镜像。
这种方式一般用于将用户的容器镜像 Tar 包导入为镜像中心的自定义镜像。主要流程:
- 确定镜像需要写入的目标可用区。
- 使用目标可用区的算力资源创建极值算力实例,并启用「Docker 容器」功能。
- 上传容器镜像 tar 文件至极值算力实例,通过
docker load导入为镜像。 - 根据平台规范,执行
docker tag添加镜像标签。 - 使用平台内部 Registry 域名,将镜像推送到当前实例所在可用区的租户镜像仓库。
环境要求
- 要求极值算力实例已启用「Docker 容器」功能。
- 强烈推荐先安装
buildx,因为它基于更先进的 BuildKit 引擎,能提供更快的构建速度、更强大的功能以及旧版构建器所不支持的多平台镜像构建能力。详见 BuildKit。language-shellmkdir -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 流式管道。具体选择、命令和使用边界参见以下教程。
创建极值算力实例,并打开「Docker 容器」功能。
将镜像 Tar 包传输到极值算力实例或共享存储中。如果文件较大,建议先上传到共享高性能存储,或使用 SSH/SCP 方式直接传输到极值算力实例。
- 通过极值算力实例上传与下载文件
- 大文件建议先上传到共享高性能存储,再从极值算力实例中加载。
在极值算力实例中,使用
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所在分区的剩余空间。
- 文件未找到:请检查 tar 文件路径是否正确,使用
加载完成后,使用
docker images查看镜像列表,确认镜像已存在:language-bashdocker images | grep cuda预期输出示例:
language-textREPOSITORY 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 凭证后再继续。
设置仓库路径并推送
使用租户 ID设置租户镜像仓库根路径。
language-shellexport 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提示
租户私有仓库的地址规则和凭证范围,参见镜像仓库地址与可用区。
为镜像添加租户私有仓库路径和标签。
language-bash# 已通过前述步骤获取当前可用区私有镜像仓库根路径 CURRENT_ZONE_REPO_ROOT docker tag cuda-12.9 $CURRENT_ZONE_REPO_ROOT/cuda-12.9执行
docker push。language-shelldocker push $CURRENT_ZONE_REPO_ROOT/cuda-12.9常见问题:
- 需要登录或权限拒绝 (Denied):先确认极值算力实例已开启 Docker 容器 功能,再返回完成 Registry 登录准备,按照本页显示的方式恢复或重新登录。
推送完成后,您可以检查命令输出,确保所有层都显示
Pushed。还可以访问镜像中心,在自定义镜像标签页中查看您的镜像。
信息
跨可用区推送镜像
不同可用区的镜像仓库相互独立,暂不支持自动同步。如果需要从可用区 A 的极值算力实例推送镜像至可用区 B,请获取可用区 B Registry 的公网访问地址与登录凭证。详见镜像仓库地址与可用区和通过命令行推送镜像。