Skip to content

导出镜像

您可以从极值算力实例中保存离线镜像文件,并下载至本地机器中。可以在不访问 Docker 仓库(registry)的情况下,实现镜像的离线移植和备份。传输至其他机器后,使用 docker load 命令加载该镜像。

主要用例包括:

  • 物理隔离环境 在没有网络连接的安全环境中手动迁移镜像。
  • 简单的备份与归档:将镜像保存为单个 .tar 文件,便于在文件系统或存储服务中进行独立备份。
  • 临时的点对点传输:无需借助公共或私有镜像仓库,可通过 ssh 等方式在两台机器间快速直接地传递镜像。

导出镜像并传输至其他极值算力实例

在智算云平台的极值算力实例之间传输镜像时,使用镜像离线 tar 文件可作为替代租户镜像仓库的一种备选方案。

信息

这种方式仅在极值算力实例之间传输镜像。在租户镜像仓库可用时,建议优先使用租户镜像仓库。

以下介绍通过 docker save 导出镜像离线 .tar 文件,传输至同可用区另一台极值算力实例的步骤:

  1. 在极值算力实例上检查本地镜像,当前极值算力实例上已存在本地构建的 cuda-12.9:latest 镜像。

    language-shell
    root@is-db2g2ndlc7dyv2ho-devmachine-0:~# docker images
    REPOSITORY   TAG                    IMAGE ID       CREATED      SIZE
    cuda-12.9    latest                 ce071c4b4884   2 days ago   14.9GB
  2. 通过 docker save 命令可以将 Docker 镜像保存为 /tmp/cuda-12.9-latest.tar 文件(极值算力实例的 /tmp 目录会在重启后自动清理,不占用额外空间)。

    language-shell
    # 将 cuda-12.9:latest 镜像保存为 cuda-12.9-latest.tar
    # 命令成功后无输出
    root@is-db2g2ndlc7dyv2ho-devmachine-0:~# docker save -o /tmp/cuda-12.9-latest.tar cuda-12.9:latest
  3. 检查 /tmp/cuda-12.9-latest.tar 文件是否存在。

    language-shell
    root@is-db2g2ndlc7dyv2ho-devmachine-0:~# ls -alht /tmp/cuda-12.9-latest.tar
    -rw------- 1 root root 14G Nov 10 11:09 /tmp/cuda-12.9-latest.tar
  4. 由于需要通过 scp 传输镜像 tar 文件,因此必须获取目标极值算力实例的 SSH 登录凭证。该步骤不可跳过。您有以下几个选项:

    • 推荐:请在极值算力「容器实例」页面找到目标极值算力实例,在「SSH 登录」列确认目标实例已开启基于密码认证 SSH 服务,并复制和记录 SSH 登录密码。如果未开启,请在该实例「操作」栏点击「改配」,开启 SSH 服务的密码认证,等待极值算力实例重启并再次进入运行中状态。
    • 备选:如果熟悉 SSH 密钥对生成和配置流程,可以在当前极值算力实例生成公私对,在目标极值算力实例上写入 SSH 公钥。
  5. 登录同可用区另一台极值算力实例,执行 hostname -i 命令获取临时内网 IP。

    language-shell
    root@is-db3innzjy6ytobaz-devmachine-0:~# hostname -i
    172.27.36.105

    信息

    • 同可用区内网传输速度较快,可通过获取临时内网 IP 实现极值算力实例之间快速传输。极值算力实例重启后内网 IP 可能会变化,需重新获取。
    • 不同可用区之间不支持内网传输,请在极值算力「容器实例」页面目标实例的「SSH 登录」列复制「SSH 连接命令」,获取 SSH IP 和端口号进行传输。
  6. 执行 scp 命令将 /tmp/cuda-12.9-latest.tar 文件传输至目标极值算力实例。

    language-shell
    # 从当前实例传输至目标实例的 /tmp 目录
    # -vv 实现 verbose 模式,显示详细传输信息
    scp -vv /tmp/cuda-12.9-latest.tar root@172.27.36.105:/tmp/
  7. 登录目标极值算力实例,检查 /tmp/cuda-12.9-latest.tar 文件是否存在。

    language-shell
    root@is-db3innzjy6ytobaz-devmachine-0:~# ls -alht /tmp
    total 14G
    -rw------- 1 root root 14G Nov 10 11:20 cuda-12.9-latest.tar

    确认镜像 tar 文件传输成功,执行 docker load 命令加载镜像。

    language-shell
    # 从 /tmp 目录加载 cuda-12.9-latest.tar 文件
    root@is-db3innzjy6ytobaz-devmachine-0:~# docker load -i /tmp/cuda-12.9-latest.tar 
    b706c187b212: Loading layer [==================================================>]  80.41MB/80.41MB
    c3ceff516656: Loading layer [==================================================>]  2.655GB/2.655GB
    1e830f953129: Loading layer [==================================================>]  8.686MB/8.686MB
    f264ce502d31: Loading layer [==================================================>]  6.144kB/6.144kB
    8f05333dea9c: Loading layer [==================================================>]  10.05GB/10.05GB
    64e9471211ad: Loading layer [==================================================>]  2.148GB/2.148GB
    Loaded image: cuda-12.9:latest

    以上输出表示镜像已经成功加载。

终端录制

保存并重新加载 Docker 镜像

在演示库中打开

适用于离线迁移、备份或跨实例传输自定义镜像。

导出镜像并下载至本地机器

如果希望将 极值算力实例上下载、构建的镜像传输到本地机器,只需要将 docker save 导出的镜像离线 .tar 文件下载到本地,再通过 docker load 加载镜像。

  1. 导出镜像离线 .tar 文件的步骤与导出镜像并传输至其他实例相同。

  2. 在极值算力「容器实例」页面,找到当前极值算力实例,在「SSH 登录」列复制「SSH 连接命令」,获取 SSH 登录凭证,包括 IP 和端口号。

    信息

    本步骤假设您本地机器已经可以成功 SSH 远程登录极值算力实例。如果未配置,详见 SSH 远程登录。

  3. 在本地机器,使用 scp 命令,指定极值算力实例 SSH IP 和端口号,将镜像 tar 文件从极值算力实例传输到本地。

    language-shell
    # 从实例传输至本地 /tmp 目录
    # -vv 实现 verbose 模式,显示详细传输信息
    scp -vv -P 41294 root@199.115.57.194:/tmp/cuda-12.9-latest.tar /tmp/

    如果不熟悉 scp 使用,可参考 上传与下载文件

  4. 在本地机器,使用 docker load 命令加载镜像,具体方法与导出镜像并传输至其他实例相同。

    信息

    • 请注意镜像平台差异,极值算力实例构建的镜像可能为 linux/amd64linux/arm64 等不同平台。在加载镜像时,需要确保本地机器的 Docker 引擎支持该平台。
    • 如果在极值算力实例内构建镜像,建议安装 Docker Buildx 插件。