ECR - 啥是注册表,啥是存储库

Posted

技术标签:

【中文标题】ECR - 啥是注册表,啥是存储库【英文标题】:ECR - What is the registry and what is a repositoryECR - 什么是注册表,什么是存储库 【发布时间】:2018-02-24 03:08:02 【问题描述】:

尝试熟悉 ECR - 我知道您应该能够将任意数量的存储库推送到 Docker 注册表。

但是,ECR 有一个“存储库”的概念。 因此,如果我有 10 个不同的容器组成我的应用程序,这是否意味着我需要 10 个存储库中的注册表?

我可以拥有一个存储库并推送 10 个带有“最新”标签的不同容器吗?

目前,如果我用相同的 registry/repository_name 模式标记另一个图像,它会替换我另一个图像上的 latest 标记:

【问题讨论】:

【参考方案1】:

如果你想获得详细的描述,我会查看What Is Amazon EC2 Container Registry?页面,它详细描述了组件,但两者之间的高级区别是:每个帐户都有注册表每个注册表可以包含几个存储库每个存储库可以包含多个图像。一个图像可以有多个标签,一个标签在每个存储库中只能存在一次

如果您查看对存储库的引用:

[account].dkr.ecr.[region].amazonaws.com/[repository_name]

第一个/ 前面的部分是您的注册表,第一个/ 之后的部分是您的存储库。

因此,您在这里遇到的是,通过将第二个图像推送到同一个存储库,您正在更改 latest 标记指向的引用。

如果您想拥有多个不同的图像,每个图像都有自己的latest 标签,每个图像都应该有自己的存储库。基于 ECR 的定价,you only pay based on the storage size and transfer from an ECR Repo,因此不创建额外的回购几乎没有什么好处。

【讨论】:

但是,问题是如果我想从 CI 推送新图像,我需要有一个具有“创建存储库”权限的不同 IAM 主体;或预先创建所有存储库。如果我可以直接推送到注册表,那就更有意义了。例如我在 ECR 存储库概念中看不到任何价值。 啊,这听起来像是您的问题中最初包含的有用信息。也就是说,考虑到您正在考虑将所有图像放在一个存储库中,我认为允许您的 CI 创建新存储库没有不利之处。如果我正确理解您的用例,我不知道有任何 docker 注册表非常适合您的用例。 自动存储库创建将解决这个问题,这是一个强烈要求但仍然只是一个建议:github.com/aws/containers-roadmap/issues/853 和 github.com/aws/containers-roadmap/issues/799。

以上是关于ECR - 啥是注册表,啥是存储库的主要内容,如果未能解决你的问题,请参考以下文章

怎么查看我电脑的注册表 啥是注册表啊?谢谢

字节三面:到底知不知道啥是Eureka?

1.2 啥是Spring,为啥它与微服务有关

Vue 啥是生命周期

aws fargate 和私有容器存储库

Meteor - 啥是 Spacebars.kw hash: Object