

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将多架构映像推送到 Amazon ECR 私有存储库
<a name="docker-push-multi-architecture-image"></a>

通过创建和推送 Docker 清单列表，您可以将多架构映像推送到 Amazon ECR 存储库。*清单列表*是通过指定一个或多个镜像名称创建的镜像列表。大多数情况下，清单列表是从提供相同功能但适用于不同操作系统或架构的映像创建的。清单列表不是必需项。有关更多信息，请参阅 [Docker 清单](https://docs.docker.com/engine/reference/commandline/manifest/)。

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

 **先决条件** 
+ 在您的 Docker CLI 中，开启实验性功能。有关实验性功能的信息，请参阅 Docker 文档中的 [Experimental features](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features)。
+ 在推送镜像之前，Amazon ECR 存储库必须存在。有关更多信息，请参阅 [创建 Amazon ECR 私有存储库以存储映像](repository-create.md)。
+ 在创建 Docker 清单之前，必须将映像推送到您的存储库。有关如何推送镜像的信息，请参阅 [将 Docker 映像推送到 Amazon ECR 私有存储库](docker-push-ecr-image.md)。

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

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

   要对 Amazon ECR 注册表验证 Docker，请运行 **aws ecr get-login-password** 命令。将身份验证令牌传递给 **docker login** 命令时，将值 `AWS` 用作用户名，并指定要对其进行身份验证的 Amazon ECR 注册表 URI。如果对多个注册表进行身份验证，则必须针对每个注册表重复该命令。
**重要**  
如果收到错误，请安装或更新到最新版本的 AWS CLI。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[安装 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。

   ```
   aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```

1. 列出存储库中的镜像，确认镜像标签。

   ```
   aws ecr describe-images --repository-name my-repository
   ```

1. 创建 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
   ```

1. (可选) 检查 Docker 清单列表。这使您能够确认清单列表中引用的每个镜像清单的大小和摘要。

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

1. 将 Docker 清单列表推送到您的 Amazon ECR 存储库。

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