推送多架构镜像 - Amazon ECR

推送多架构镜像

Amazon ECR 支持创建和推送用于多架构镜像的 Docker 清单列表。清单列表是通过指定一个或多个镜像名称创建的镜像列表。大多数情况下,清单列表是从提供相同功能但适用于不同操作系统或架构的镜像创建的。清单列表不是必需项。有关更多信息,请参阅 Docker 清单

重要

您的 Docker CLI 必须启用实验功能才能使用此功能。有关详细信息,请参阅实验功能

清单列表可以像其他 Amazon ECR 镜像一样在 Amazon ECS 任务定义或 Amazon EKS Pod 规范中提取或引用。

可以使用以下步骤创建 Docker 清单列表并将其推送到 Amazon ECR 存储库。您必须已将镜像推送到您的存储库,才能在 Docker 清单中引用。有关如何推送镜像的信息,请参阅 推送 Docker 镜像

将多架构 Docker 镜像推送到 Amazon ECR 存储库

在推送镜像之前,Amazon ECR 存储库必须存在。有关更多信息,请参阅 创建私有存储库

  1. 向要向其推送镜像的 Amazon ECR 注册表验证 Docker 客户端的身份。必须针对每个注册表获得授权令牌,令牌有效期为 12 小时。有关更多信息,请参阅 私有注册表身份验证

    要对 Amazon ECR 注册表验证 Docker,请运行 aws ecr get-login-password 命令。将身份验证令牌传递给 docker login 命令时,将值 AWS 用作用户名,并指定要对其进行身份验证的 Amazon ECR 注册表 URI。如果对多个注册表进行身份验证,则必须针对每个注册表重复该命令。

    重要

    如果收到错误,请安装或更新到最新版本的 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南中的安装 AWS Command Line Interface

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  2. 列出存储库中的镜像,确认镜像标签。

    aws ecr describe-images --repository-name my-repository
  3. 创建 Docker 清单列表。manifest create 命令验证引用的镜像是否已存在于您的存储库中,并在本地创建清单。

    docker manifest create aws_account_id.dkr.ecr.region.amazonaws.com/my-repository aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:image_one_tag aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:image_two
  4. (可选) 检查 Docker 清单列表。这使您能够确认清单列表中引用的每个镜像清单的大小和摘要。

    docker manifest inspect aws_account_id.dkr.ecr.region.amazonaws.com/my-repository
  5. 将 Docker 清单列表推送到您的 Amazon ECR 存储库。

    docker manifest push aws_account_id.dkr.ecr.region.amazonaws.com/my-repository