文档首页/ 容器镜像服务 SWR/ 最佳实践/ 如何制作多架构镜像
更新时间:2025-08-12 GMT+08:00
分享

如何制作多架构镜像

操作场景

当您需要针对x86、ARM架构分别构建镜像并设置不同的镜像版本时。您可以参考本章节来构建多架构镜像,并通过docker manifest 相关命令实现一个镜像版本管理多架构的容器镜像。

前置步骤

  1. 检查Docker版本。

    确保你使用的是支持扩展Manifest功能的Docker版本(19.03或更高)。运行以下命令查看版本:

    docker --version
  2. 如果您的Docker版本低于19.03版本请设置实验功能环境变量。
    打开Docker守护进程的配置文件/etc/docker/daemon.json。
    vim /etc/docker/daemon.json

    修改experimental参数的值为true。如果没有该参数请手动添加。

      "experimental": true

    保存文件并重启Docker服务使修改生效。

    sudo systemctl restart docker
  3. 验证实验功能是否已开启
    echo $DOCKER_CLI_EXPERIMENTAL

    • 如果输出是 enabled,则表示实验性功能已启用。
    • 如果输出是 disabled 或为空,则表示实验性功能未启用。

操作步骤

  1. 参见创建JDK8基础镜像并上传至SWR构建并推送如下两个镜像到镜像仓库。

    docker push ${repository_url}/${organization}/${image_name}:${image_tag}-amd64
    docker push ${repository_url}/${organization}/${image_name}:${image_tag}-arm64

  2. 构建多架构镜像的 manifest。

    1. 创建多架构镜像 manifest。
      docker manifest create --amend --insecure ${repository_url}/${organization}/${image_name}:${image_tag} ${repository_url}/${organization}/${image_name}:${image_tag}-amd64 ${repository_url}/${organization}/${image_name}:${image_tag}-arm64
    1. 修改镜像 manifest 文件(添加 arch 信息)。
      docker manifest annotate ${repository_url}/${organization}/${image_name}:${image_tag} ${repository_url}/${organization}/${image_name}:${image_tag}-amd64 --arch amd64
      docker manifest annotate ${repository_url}/${organization}/${image_name}:${image_tag} ${repository_url}/${organization}/${image_name}:${image_tag}-arm64 --arch arm64

  3. 推送镜像 manifest。

    docker manifest push ${repository_url}/${organization}/${image_name}:${image_tag}

如何跨CPU架构下载镜像

通过--platform参数指定要拉取的镜像的架构

docker pull ${repository_url}/${organization}/${image_name}:${image_tag} --platform=linux/amd64

platform参数取值说明:

  • --platform=linux/amd64: x86_64 架构的 Linux 系统。
  • --platform=linux/arm64: ARM64 架构的 Linux 系统。

相关文档