问:什么是 Amazon EC2 容器注册表 (ECR)?

Amazon EC2 Container Registry (ECR) 是完全托管的 Docker 容器注册表,可以让开发人员轻松存储、管理和部署 Docker 容器镜像。Amazon ECR 与 Amazon EC2 Container Service (ECS) 集成,从而简化了生产工作流的开发。Amazon ECR 使您无需操作自己的容器存储库,也不必为扩展底层基础设施而担心。Amazon ECR 将您的镜像存储在高度可用且可扩展的架构中,使您能够为应用程序可靠部署容器。与 AWS Identity and Access Management (IAM) 集成,使您可以对每个存储库进行资源级别的控制。

问:为什么应该使用 Amazon ECR?

Amazon ECR 使您无需操作和扩展增强容器注册表功能所需的基础设施。Amazon ECR 使用 Amazon S3 进行存储,可确保您的容器镜像高度可用且可访问,使您可以为您的应用程序可靠地部署新容器。Amazon ECR 通过 HTTPS 传输您的容器镜像,然后自动对镜像进行静态加密。您可以通过配置策略来管理每个存储库的权限并限制对 IAM 用户、角色或其他 AWS 账户的访问。Amazon ECR 集成了 Amazon ECS 和 Docker CLI,使您能够简化开发和生产工作流。您可以使用 Docker CLI 将容器镜像从您的开发计算机轻松推送到 Amazon ECR,Amazon ECS 在随后可以直接将其取回用于生产部署。

问:Amazon ECR 如何定价?

Amazon ECR 无需预付费。您只需为存储库中存储的数据量以及传输到 Internet 的数据付费。

问:Amazon ECR 是一项全球服务吗?

Amazon ECR 是一项地区性服务,旨在帮助您灵活部署镜像。您可以将镜像推送或提取至 Docker 群集所在的地区,以便获得最佳性能。您也可以在 Docker 运行的任何位置 (例如桌面和本地环境) 访问 Amazon ECR。在不同地区间提取镜像或将镜像提取至 Internet 将造成额外的延迟并产生数据传输费用。

问:Amazon ECR 可以托管公有容器镜像吗?

Amazon ECR 目前支持私有镜像。不过,通过使用基于 IAM 资源的权限,您可以为每个存储库配置策略,以支持对 IAM 用户、角色或其他 AWS 账户的访问。

问:我可以在 Amazon ECR 上启用哪些合规性功能?

您可以使用 Amazon ECR 上的 AWS CloudTrail 提供包含所有 API 操作的历史记录,例如,哪位用户提取了镜像以及何时在镜像间移动了标签。管理员还可以了解哪些 EC2 实例提取了哪些镜像。


问:如何开始使用 Amazon ECR?

开始使用 Amazon ECR 的最佳方式是使用 Docker CLI 来推送和提取您的首个镜像。查看我们的文档从而了解更多信息。

问:要管理我的存储库和镜像,最佳方式是什么?

Amazon ECR 提供了命令行界面和 API,用于创建、监控和删除存储库并设置存储库权限。您可以在 Amazon ECR 管理控制台中执行相同的操作,该控制台可通过 Amazon ECS 控制台的“存储库”部分进行访问。Amazon ECR 还集成了 Docker CLI,可支持您在开发计算机上推送和提取镜像并为镜像添加标签。

问:Amazon ECR 是否可以跨地区复制镜像?

不可以。Amazon ECR 旨在帮助您将镜像灵活地存储在所需的位置,并灵活地部署镜像。您可以创建部署管道,用于构建镜像,将镜像推送至选定地区内的 Amazon ECR,然后将镜像部署至 Docker 群集。

问:我能否在本地环境中使用 Amazon ECR?

可以。您可以在 Docker 运行的任何位置 (例如,桌面和本地环境) 访问 Amazon ECR。

问:Amazon ECR 是否提供 Amazon Linux 容器镜像?

可以。Amazon ECR 提供 Amazon Linux 容器镜像,详细步骤可参见论坛内容。客户可以用这些容器镜像在其基于 Linux 的 Docker 环境中运行工作负载。容器镜像带有极少的软件包,能够安装全套 Amazon Linux AMI 软件包。与 EC2 中的 Amazon Linux AMI 类似,Amazon Linux 容器镜像会从 Amazon 获得安全更新、滚动发布和软件包更新形式的持续更新。

问:Amazon ECR 是否可与 Amazon ECS 协同工作?

可以。Amazon ECR 与 Amazon ECS 集成,让您能够轻松地存储、运行和管理在 Amazon ECS 上运行的应用程序的容器镜像。您需要做的只是在您的任务定义中指定 Amazon ECR 存储库,然后 Amazon ECS 将为您的应用程序检索相应的镜像。

问:Amazon ECR 是否可与 AWS Elastic Beanstalk 协同工作?

是。AWS Elastic Beanstalk 支持适用于单容器和多容器 Docker 环境的 Amazon ECR,让您能够使用 AWS Elastic Beanstalk 轻松部署存储在 Amazon ECR 中的容器镜像。为此,您只需在您的 Dockerrun.aws.json 配置中指定 Amazon ECR 存储库,并将 AmazonEC2ContainerRegistryReadOnly 策略挂载到您的容器实例角色。

问:Amazon ECR 支持哪些版本的 Docker Engine?

Amazon ECR 目前支持 Docker Engine 1.7.0 及更高版本。

问:Amazon ECR 支持哪些版本的 Docker Registry API?

Amazon ECR 支持 Docker Registry V2 API 规范。

问:Amazon ECR 能否从 Dockerfile 中自动创建镜像?

不可以。但是,Amazon ECR 可与多种常用 CI/CD 解决方案集成,以提供此功能。请参阅 AWS 合作伙伴页面,了解更多信息。

问:Amazon ECR 是否支持联合访问?

可以。Amazon ECR 与 AWS Identity and Access Management 集成,可支持联合身份验证,实现对 AWS 管理控制台或 AWS API 的授权访问。

问:Amazon ECR 支持哪些版本的 Docker Image Manifest 规范?

Amazon ECR 支持 Docker Image Manifest V2 (Schema 2 格式)。为保持与 Schema 1 镜像的向后兼容性,Amazon ECR 将继续接受以 Schema 1 格式上传的镜像。此外,当使用较低版本 (1.9 及更低版本) 的 Docker Engine 提取镜像时,Amazon ECR 可以执行向下转换,即将 Schema 2 镜像转换为 Schema 1 镜像。

问:Amazon ECR 是否支持 Open Container Initiative (OCI) 格式?

可以。Amazon ECR 可支持 Open Container Initiative (OCI) 镜像,让您能够推送和提取 OCI 镜像。提取镜像时,Amazon ECR 还可以在 Docker Image Manifest V2 (Schema 2) 镜像与 OCI 镜像之间进行转换。


问:Amazon ECR 如何帮助确保容器镜像的安全?

Amazon ECR 自动对静态映像进行加密,并通过 HTTPS 传输容器映像。您可以使用 AWS Identity and Access Management (IAM) 用户和角色配置策略,以管理权限并控制对镜像的访问,而无需直接在 EC2 实例上管理凭证。

问:如何使用 AWS Identity and Access Management 控制权限?

您可以使用基于 IAM 资源的策略来控制和监控哪些主体 (例如 EC2 实例) 可以访问您的容器镜像,以及它们的访问时间、地点和方式。首先,使用管理控制台为您的存储库创建基于资源的策略。或者,您也可以使用示例策略,并通过 Amazon ECR CLI 将策略挂载至存储库。

问:我是否可以在不同 AWS 账户间共享我的镜像?

可以,以下是一个创建和设置跨账户镜像共享策略的示例。