amazon-web-services-“最新”标签如何在ECS任务定义和从ECR中提取的容器实例中工作?

前端之家收集整理的这篇文章主要介绍了amazon-web-services-“最新”标签如何在ECS任务定义和从ECR中提取的容器实例中工作? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在ECR任务定义中使用最新标记时遇到问题,其中图像参数的值类似XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest.

我期望一旦在容器实例(注册到集群的EC2实例)上运行了新的服务实例(任务),此任务定义就会从ECR中提取带有最新标签的图像.

但是,就我而言,当我远程连接到容器实例并列出docker映像时,我可以看到它尚未从ECR中提取最新的发行版映像.

自从我更新了任务定义以使用显式定义版本标记的最新标记实例(即:v1.05)以来,最新标记在当前版本之后有两个发行版本.

我在这个集群上只有一个容器实例.

我的过程中可能会有一些怪癖,但是这个问题主要是关于这种最新情况在这种情况下应如何表现?

我的docker映像构建和标记,ECR推送,ECS任务定义更新以及ECS服务更新过程:

  1. # Build the image with multiple tags
  2. docker build -t reponame/web:latest -t reponame/web:v1.05 .
  3. # Tag the image with the ECR repo URI
  4. docker tag ${imageId} XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web
  5. # Push both tags separately
  6. docker push XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:v1.05
  7. docker push XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest
  8. # Run only if the definition file's contents has been updated
  9. aws ecs register-task-definition --cli-input-json file://web-task-definition.json
  10. # Update the service with force-new-deployment
  11. aws ecs update-service \
  12. --cluster my-cluster-name \
  13. --service web \
  14. --task-definition web \
  15. --force-new-deployment

使用任务定义文件

  1. {
  2. "family": "web","containerDefinitions": [
  3. {
  4. "name": "web","image": "XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest","essential": true,"memory": 768,"memoryReservation": 512,"cpu": 768,"portMappings": [
  5. {
  6. "containerPort": 5000,"hostPort": 80
  7. }
  8. ],"entryPoint": [
  9. "yarn","start"
  10. ],"environment": [
  11. {
  12. "name": "HOST","value": "0.0.0.0"
  13. },{
  14. "name": "NUXT_HOST",{
  15. "name": "NUXT_PORT","value": "5000"
  16. },{
  17. "name": "NODE_ENV","value": "production"
  18. },{
  19. "name": "API_URL","value": "/api"
  20. }
  21. ]
  22. }
  23. ]
  24. }
最佳答案
原来问题出在我的脚本上.正在使用另一个具有旧值的变量,该变量仍存储在我的终端会话中.

我已经验证,通过在任务定义的图像源url中使用Latest标签,确实具有一个新启动的服务实例,可以从ECR中提取具有最新标签的图像.

无需注册任务定义的新修订版.

附带说明,在处理最新标签时需要格外小心.在这种情况下,它似乎可以解决问题,但在许多其他情况下,则容易出错:Ref1Ref2

猜你在找的Docker相关文章