

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

# 将 Docker 映像推送到 Amazon ECR 私有存储库
<a name="docker-push-ecr-image"></a>

您可以使用 **docker push** 命令将容器镜像推送到 Amazon ECR 存储库。

Amazon ECR 还支持创建和推送用于多架构映像的 Docker 清单列表。有关信息，请参阅[将多架构映像推送到 Amazon ECR 私有存储库](docker-push-multi-architecture-image.md)。

**推送 Docker 镜像到 Amazon ECR 存储库**

在您推送映像之前，Amazon ECR 存储库必须存在，或者必须定义存储库创建模板。有关更多信息，请参阅[创建 Amazon ECR 私有存储库以存储映像](repository-create.md)和[用于控制在缓存拉取、推送时创建或复制操作期间创建的存储库的模板](repository-creation-templates.md)。

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. 如果您要推送到的注册表中尚不存在您的图像存储库，并且您已经定义了存储库创建模板，则可以使用存储库创建模板的前缀和所需的存储库名称来推送映像。ECR 将使用存储库创建模板的预定义设置自动为您创建存储库。

   如果您没有定义匹配的存储库创建模板，则需要创建一个存储库。有关更多信息，请参阅 [用于控制在缓存拉取、推送时创建或复制操作期间创建的存储库的模板](repository-creation-templates.md)或 [创建 Amazon ECR 私有存储库以存储映像](repository-create.md)。

1. 识别要推送的本地镜像。运行 **docker images** 命令列出系统中的容器镜像。

   ```
   docker images
   ```

   您可以在生成的命令输出中使用该*repository:tag*值或图像 ID 来识别图像。

1. <a name="image-tag-step"></a>通过要使用的 Amazon ECR 注册表、存储库和可选镜像标签名称组合标记您的镜像。注册表格式为`aws_account_id.dkr.ecr.region.amazonaws.com`。存储库名称应与您为镜像创建的存储库一致。如果省略镜像标签，我们将假定标签为 `latest`。

   以下示例将 ID 为的本地图像标记* e9ae3c220b23*为`aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag`。

   ```
   docker tag e9ae3c220b23 aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
   ```

1. <a name="image-push-step"></a>使用 **docker push** 命令推送镜像：

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

1. (可选) 通过重复 [Step 4](#image-tag-step) 和 [Step 5](#image-push-step)，向镜像应用任何其他标签并将这些标签推送到 Amazon ECR。