把docker图像推到亚马逊ecs仓库
Im新的AWS。 我想在AWS ECS容器实例上设置私有Docker存储库。 我创build了一个名为name
的存储库。 AWS显示的示例push命令正在工作。
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
但是用这个命令,我build立并推送了一个名为name
的图像,我想要build立一个名为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容器registry需要为要发布到registry的每个映像“名称”或“名称空间/名称”设置映像存储库 。
您可以在每个Repository中发布任何您想要的:tags
(默认限制为100个标签)。
我没有在AWS文档中的任何地方明确指出存储库 – >映像名称映射,但是它隐含在创build存储库 – ECR用户指南中的第6d部分
Docker Image规范包括它的存储库定义
知识库
在一个公共前缀下分组的标签集合(名称组件
:
之前)。 例如,在名为my-app:3.1.4
,my-app是名称的Repository组件。 存储库名称由斜杠分隔的名称组件组成,可以select以DNS主机名作为前缀。 主机名必须符合标准DNS规则,但不能包含_
字符。 如果存在主机名,则可以select后跟一个:8080
格式的端口号。 名称组件可能包含小写字符,数字和分隔符。 分隔符被定义为句点,一个或两个下划线或一个或多个破折号。 名称组件不能以分隔符开始或结束。
不需要为每个图像创build一个回购,只需重新命名:
docker build -t foo . docker tag foo ####.dkr.ecr.us-west-2.amazonaws.com/name:foo_v0.23.1 docker push ####.dkr.ecr.us-west-2.amazonaws.com/name:foo_v0.23.1