Amazon ECR
用户指南 (API Version 2015-09-21)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Amazon ECR 注册表

您可以使用 Amazon ECR 注册表在一个可用性和可扩展性都非常高的架构中托管您的映像,从而安全可靠地为应用程序部署容器。您可以使用注册表管理映像存储库和 Docker 映像。每个 AWS 账户提供单个 (默认) Amazon ECR 注册表。

注册表概念

  • 您的默认注册表的 URL 为 https://aws_account_id.dkr.ecr.region.amazonaws.com

  • 默认情况下,您有在默认注册表中读取和写入您所创建的存储库和映像的权限。

  • 您必须为 Docker 客户端授予注册表权限,以便使用 docker pushdocker pull 命令对该注册表中的存储库执行推送和拉取映像操作。有关更多信息,请参阅 注册表身份验证

  • 可通过 IAM 用户访问策略及存储库策略对存储库加以控制。

注册表身份验证

您可以使用 AWS 管理控制台、AWS CLI 或 AWS SDK 创建和管理存储库,以及对映像执行某些操作,例如列出或删除映像。这些客户端使用标准 AWS 身份验证方法。尽管在技术上可以使用 Amazon ECR API 推送和拉取映像,但您使用 Docker CLI (或特定语言的 Dockerf 库) 执行这些操作的情况可能更加普遍。

由于 Docker CLI 不支持标准 AWS 验证方法,您必须用其他方法授予 Docker 客户端访问权限,以便 Amazon ECR 了解谁在请求推送或拉取映像。如果您使用 Docker CLI,然后使用 docker login 命令,通过 Amazon ECR 提供的授权令牌,授予访问 Amazon ECR 注册表的权限,该令牌有效期为 12 个小时。The GetAuthorizationToken API 操作提供采用 base64 编码的授权令牌,其中包含用户名 (AWS) 和密码,解码后可在 docker login 命令中使用。但是,AWS CLI 中提供了更简单的 get-login 命令 (检索令牌、解码并将其转换为 docker login 命令)。

使用 get-login 对 Amazon ECR 注册表验证 Docker

注意

AWS CLI 从版本 1.9.15 开始提供 get-login 命令;但对于较新的 Docker 版本 (17.06 或更高版本),我们建议使用 1.11.91 或更高版本。您可以使用 aws --version 命令查看 AWS CLI 的版本。

  1. 运行 aws ecr get-login 命令。以下示例适用于与创建请求的账户关联的默认注册表。要访问其他账户注册表,请使用 --registry-ids aws_account_id 选项。如果您使用的是 Docker 17.06 或更高版本,请在 get-login 后包含 --no-include-email 选项。有关更多信息,请参阅 AWS Command Line Interface Reference 中的 get-login

    Copy
    aws ecr get-login

    输出:

    Copy
    docker login -u AWS -p password -e none https://aws_account_id.dkr.ecr.us-east-1.amazonaws.com

    重要

    如果收到 Unknown options: --no-include-email 错误,请安装最新版本的 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的安装 AWS 命令行界面

    结果输出是 docker login 命令,此命令可用于对 Amazon ECR 注册表验证 Docker 客户端。

  2. docker login 命令复制并粘贴到终端,授权您的 Docker CLI 访问注册表。此命令提供一个授权令牌,此令牌在 12 小时内对指定注册表有效。

    注意

    如果使用的是 Windows PowerShell,复制并粘贴这样的长字符串将不起作用。请使用以下命令。如果您使用的是 Docker 17.06 或更高版本,请在 get-login 后包含 --no-include-email 选项。

    Copy
    Invoke-Expression -Command (aws ecr get-login)

    重要

    在执行此 docker login 命令时,进程列表 (ps -e) 显示中将为系统上的其他用户显示命令字符串。由于 docker login 命令包含验证凭证,因此系统上的其他用户可按此方式查看凭证并使用这些凭证来获取对存储库的推送和拉取访问权会带来风险。如果您所在的系统不安全,则应考虑此风险,并通过省略 -p password 选项并在系统提示时输入密码来以交互方式登录。