在使用容器镜像时,会有这样的场景:手动将镜像从公共仓库拉取到其私有ECR,然后同时需要保持同步,这增加了操作复杂性和维护成本。
ECR中提供pull through cache
特性, 通过pull through cache
拉取的镜像会自动与上游仓库保持同步,从而消除定期更新的手动工作。
在ECR控制台中选择Private registry,然后编辑pull through cache
配置:
选择Add Rule:
选择上游仓库,在本示例中为 ECR Public
(还支持docker,quay等):
设置一个命名空间,这里使用默认的命名空间ecr-public:
最后点击创建,完成后会显示该Role:
要引用镜像,必须使用 URL 格式:
<accountId>.dkr.ecr.<region>.amazonaws.com/<namespace>/<sourcerepo>:<tag>
拉取镜像时,将检查与命名空间关联的缓存存储库中的镜像。即使缓存存储库尚不存在,也不必先创建它。该镜像是从与命名空间关联的公共存储库中获取的,然后存储在自动创建的新ECR仓库中。
例如, 将Amazon Linux
镜像从Elastic Container Registry Public
拉取到缓存中:
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public
docker pull 111122223333.dkr.ecr.us-west-2.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest
检查存储库页面, 已创建出来一个新的私有存储库,其中包含上面拉取的映像,并指示pull through cache
处于活动状态:
pull through cache
同样简单,同样使用上面的镜像地址。如果镜像不在缓存存储库中,那么它将被pull并存储在那里。