我是AWS的新手。我想在AWS ECS容器实例上设置私有Docker存储库。我创建了一个名为的存储库name。AWS显示的示例推入命令正在运行。
name
aws ecr get-login --region us-west-2 docker build -t name . docker tag name:latest ############.dkr.ecr.us-west-2.amazonaws.com/name:latest docker push ############.dkr.ecr.us-west-2.amazonaws.com/name:latest
但是,通过此命令,我构建并推送了一个名为的映像name,我想构建一个名为的映像foo。所以我将命令更改为:
foo
docker build -t foo . docker tag foo ###########.dkr.ecr.us-west-2.amazonaws.com/name/foo docker push ###########.dkr.ecr.us-west-2.amazonaws.com/name/foo
这应该可以,但是不能。重试一段时间后,出现错误:
The push refers to a repository [###########.dkr.ecr.us-west-2.amazonaws.com/name/foo] 8cc63cf4528f: Retrying in 1 second ... name unknown: The repository with name 'name/foo' does not exist in the registry with id '############'
AWS真的需要我要推送的每个映像专用的存储库吗?
在EC2容器注册需要一个像仓库要设置为你想要发布到注册表中的每个图像“名”或“命名空间/名称”。
但是,您可以:tags在每个存储库中发布任何您想要的内容(默认限制是100个标签)。
:tags
我没有在AWS文档中的任何地方看到具体说明存储库->映像名称映射的信息,但这是通过创建存储库- ECR用户指南中的6d部分隐含的
该码头工人形象规范包括它的定义中的 库
资料库 标签的集合,这些标签被分组在一个通用前缀(之前的名称组件:)下。例如,在标记有名称的图像中 my-app:3.1.4,my- app是名称的存储库组件。存储库名称由斜杠分隔的名称组成,可以选择以DNS主机名作为前缀。主机名必须符合标准DNS规则,但不能包含_字符。如果存在主机名,则可以选择在其后跟格式的端口号 :8080。名称组件可能包含小写字符,数字和分隔符。分隔符定义为一个句点,一个或两个下划线或一个或多个破折号。名称组件不能以分隔符开头或结尾。
资料库
标签的集合,这些标签被分组在一个通用前缀(之前的名称组件:)下。例如,在标记有名称的图像中 my-app:3.1.4,my- app是名称的存储库组件。存储库名称由斜杠分隔的名称组成,可以选择以DNS主机名作为前缀。主机名必须符合标准DNS规则,但不能包含_字符。如果存在主机名,则可以选择在其后跟格式的端口号 :8080。名称组件可能包含小写字符,数字和分隔符。分隔符定义为一个句点,一个或两个下划线或一个或多个破折号。名称组件不能以分隔符开头或结尾。
:
my-app:3.1.4
_
:8080