亚马逊AWS官方博客

宣布为 Amazon Elastic Container Registry 推出直通式缓存存储库

选择使用容器托管应用程序的企业、开发团队和个人开发人员可能更愿意或可能需要从 Amazon Elastic Container Registry 获取所有映像,以利用其高可用性和安全性。为了满足这些要求,客户需要承担从公共注册表手动将映像拉取到其私有 Amazon Elastic Container Registry 存储库中的工作,然后使它们保持同步。这增加了运营复杂性和维护成本,从而影响了开发人员的生产效率。此外,有些注册表可能对图像的下载频率有限制。一旦达到这些限制,它们就会因为限制甚至拒绝映像拉取时的构建错误而开始影响开发人员及其业务的发布速度。

今天,我们宣布为不需要身份验证的可公开访问的注册表在 Amazon Elastic Container Registry 中推出直通式缓存存储库支持。直通式缓存存储库针对开发人员从公共注册表获取的容器映像为它们提供了改进的 Amazon Elastic Container Registry 性能、安全性和可用性。直通式缓存存储库中的映像会自动与上游公共注册表保持同步,从而消除了拉取映像和定期更新的手动工作。

直通式缓存存储库提供了 Amazon Elastic Container Registry 中的内置安全功能益处,例如使您能够将所有网络流量保持私有 AWS PrivateLink、扫描图像以检测漏洞、使用 AWS Key Management Service (KMS) 密钥进行的加密、跨区域复制和生命周期策略。启用后,跨区域复制旨在自动将更新的映像分发到其他区域。您只需要更新拉取 URL,以便从相关区域下载映像。

在使用直通式缓存存储库提供的映像时,对于开发人员以及支持其应用程序的构建和部署基础设施来说,下载限制也不再是问题。尽管 Amazon Elastic Container Registry 旨在自动保持缓存存储库同步,但您也可以随时手动同步存储库。而且,如果您愿意,可以关闭自动同步。

Amazon Elastic Container Registry 直通式缓存存储库入门
设置直通式缓存存储库是一个简单的过程。在以下示例中,我使用南美洲(圣保罗)区域的 Amazon Elastic Container Registry Public 作为我的上游注册表。

首先,我必须修改我的私有注册表的设置,以添加引用上游、可公开访问的注册表的规则(如果我需要其他上游注册表,可以设置多个规则)。在 Amazon Elastic Container Registry 控制台中,我首先选择 Private registry(私有注册表)然后在 Pull through cache(直通式缓存)面板中选择 Edit(编辑)以更改设置。这将带我进入 Pull through cache configuration(直通式缓存配置)页面,我可以在其中选择 Add rule(添加规则)。

Create pull through cache rule(创建直通式缓存规则)页面上,我选择上游注册表,在此示例中为 ECR Public。我还必须设置一个命名空间,以便在我的 pull 命令中引用映像时使用。在本示例中,我将接受建议的命名空间 ecr-public

将 ECR Public 配置为上游注册表

选择 Save(保存)会使我返回到 Pull through cache configuration(直通式缓存配置)页面,该页面中列出了我新配置的规则。现在,我已经准备好在拉取映像时使用缓存存储库了。

新配置的上游注册表规则

要引用映像,我必须使用 URL 格式 <accountId>.dkr.ecr.<region>.amazonaws.com/<namespace>/<sourcerepo>:<tag> 指定我在拉取 URL 中选择的命名空间。拉取映像时,将检查与命名空间关联的缓存存储库中的映像。在本例中,缓存存储库尚不存在,但我不必自己创建它。该映像是从与命名空间关联的公共注册表中的上游存储库中获取的,然后存储在自动为我创建的新缓存存储库中。

在下面的命令提示符会话中,我首先使用我的注册表进行身份验证,然后从 Amazon Elastic Container Registry Public 中拉取 Amazon Linux 2 映像放入缓存中:

C:\ aws ecr get-login-password --region sa-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public
Login Succeeded
C:\ docker pull 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest
latest: Pulling from ecr-public/amazonlinux/amazonlinux
e11e8d46e102: Pull complete
Digest: sha256:916dbbb288948b54c94b5b9f0769085aa601d4468d099e90d8a7da5cfa551b50
Status: Downloaded newer image for 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest
111122223333.dkr.ecr.us-west-2.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest

在我的 Amazon Elastic Container Registry 控制台中,查看 Repositories(存储库)页面后,会显示已创建一个新的私有存储库,其中包含我拉取的映像,同时还显示直通式缓存处于活动状态。

缓存存储库中拉取的映像

在 Dockerfiles 中,使用映像和直通式缓存存储库同样简单。我只需要使用拉取 URL 中的命名空间引用我需要的映像。如果映像不在缓存存储库中,那么它将被拉取并存储在那里供我使用。每 24 小时检查一次缓存的映像,以验证缓存的映像是否为最新版本,计时器基于缓存映像的上次拉取时间。

立即开始使用直通式缓存存储库
现在,您可以立即在所有商业 AWS 区域利用 Amazon Elastic Container Registry 的直通式缓存存储库。使用直通式缓存存储库不收取任何费用,仅按存储和数据传输的标准 Amazon Elastic Container Registry 定价收取费用。有关定价的更多详细信息,您可以参见 Amazon Elastic Container Registry 定价页面。请参阅 Amazon Elastic Container Registry 用户指南了解有关直通式缓存存储库的更多信息,并立即开始使用。

– Steve