Amazon web services “怎么做?”;最新;ECS任务定义中的标记工作和从ECR提取的容器实例?
我在ECR任务定义中使用Amazon web services “怎么做?”;最新;ECS任务定义中的标记工作和从ECR提取的容器实例?,amazon-web-services,docker,amazon-ecs,amazon-ecr,Amazon Web Services,Docker,Amazon Ecs,Amazon Ecr,我在ECR任务定义中使用latest标记时遇到问题,其中image参数的值类似于xxxxxxxxxx.dkr.ECR.us-east-1.amazonaws.com/reponame/web:latest 我希望在容器实例(注册到集群的EC2实例)上运行新服务实例(任务)后,此任务定义将从ECR中提取一个带有latest标记的映像 然而,在我的例子中,当我远程连接到容器实例并列出docker映像时,我可以看到它没有从ECR中提取最新版本的映像 最新标签当前版本后面有两个发布版本,从我更新任务定义
latest
标记时遇到问题,其中image
参数的值类似于xxxxxxxxxx.dkr.ECR.us-east-1.amazonaws.com/reponame/web:latest
我希望在容器实例(注册到集群的EC2实例)上运行新服务实例(任务)后,此任务定义将从ECR中提取一个带有latest
标记的映像
然而,在我的例子中,当我远程连接到容器实例并列出docker映像时,我可以看到它没有从ECR中提取最新版本的映像
最新标签当前版本后面有两个发布版本,从我更新任务定义到使用显式定义版本标签的最新
标签实例,即:v1.05
我在这个集群上只有一个容器实例
在我的过程中可能有一些怪癖,但这个问题主要是关于这个最新的在这种情况下应该如何表现
我的docker镜像构建和标记、ECR推送、ECS任务定义更新和ECS服务更新流程:
#使用多个标记构建图像
docker构建-t reponame/web:latest-t reponame/web:v1.05。
#用ECR repo URI标记图像
docker标签${imageId}xxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/reponame/web
#分别按下两个标签
docker push xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/reponame/web:v1.05
docker push xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest
#仅当定义文件的内容已更新时运行
aws ecs注册任务定义--cli输入jsonfile://web-task-definition.json
#使用force new deployment更新服务
aws ecs更新服务\
--群集我的群集名称\
--服务网站\
--任务定义网站\
--部队新部署
使用任务定义文件:
{
“家庭”:“网络”,
“集装箱定义”:[
{
“名称”:“网络”,
“图片”:“xxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest”,
“必要”:正确,
“记忆”:768,
“memoryReservation”:512,
“cpu”:768,
“端口映射”:[
{
“集装箱港口”:5000,
“主机端口”:80
}
],
“入口点”:[
“纱线”,“开始”
],
“环境”:[
{
“名称”:“主机”,
“值”:“0.0.0.0”
},
{
“名称”:“NUXT_主机”,
“值”:“0.0.0.0”
},
{
“名称”:“NUXT_端口”,
“值”:“5000”
},
{
“名称”:“节点环境”,
“价值”:“生产”
},
{
“名称”:“API_URL”,
“值”:“/api”
}
]
}
]
}
原来问题出在我的脚本上。正在使用另一个变量,该变量的旧值仍存储在终端会话中
我已经验证了,通过在任务定义的图像源url中使用latest
标记,确实有一个新启动的服务实例从ECR中拉入带有latest
标记的图像
无需注册任务定义的新修订版
另外,在处理latest
标记时需要小心。在这种情况下,这似乎是可行的,但在许多其他情况下,这很容易出错:,构建新图像时,必须标记并推送最新的
,否则标签将不会在注册表上更新。
还有一个选项可以在运行图像时强制拉取,这样docker主机就不会因为昨天拉取了latest
,而认为今天仍然应该尝试拉取latest
。能否显示web任务定义.json
文件?您的docker构建是否会产生与之前两个版本相同的映像(repo sha256)?最新的标记从一个图像移动到另一个图像,但如果代码也返回到同一点,则可以返回。@jogold我已编辑了我的问题,以包括任务定义文件。@jogold您似乎是正确的,这些版本的sha256摘要是相同的。这很奇怪,因为我在Dockerfile中使用了COPY语句,并且文件夹的内容已经更改,至少在一个文件(package.json)中,而该文件不在.dockerginoreok中,这至少验证了部署脚本/方法。