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服务更新过程:

# Build the image with multiple tags
docker build -t reponame/web:latest -t reponame/web:v1.05 .

# Tag the image with the ECR repo URI
docker tag ${imageId} XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web

# Push both tags separately
docker push XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:v1.05
docker push XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest

# Run only if the definition file's contents has been updated
aws ecs register-task-definition --cli-input-json file://web-task-definition.json

# Update the service with force-new-deployment
aws ecs update-service \
  --cluster my-cluster-name \
  --service web \
  --task-definition web \
  --force-new-deployment

使用任务定义文件

{
  "family": "web","containerDefinitions": [
    {
      "name": "web","image": "XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/reponame/web:latest","essential": true,"memory": 768,"memoryReservation": 512,"cpu": 768,"portMappings": [
        {
          "containerPort": 5000,"hostPort": 80
        }
      ],"entryPoint": [
        "yarn","start"
      ],"environment": [
        {
          "name": "HOST","value": "0.0.0.0"
        },{
          "name": "NUXT_HOST",{
          "name": "NUXT_PORT","value": "5000"
        },{
          "name": "NODE_ENV","value": "production"
        },{
          "name": "API_URL","value": "/api"
        }
      ]
    }
  ]
}
最佳答案
原来问题出在我的脚本上.正在使用另一个具有旧值的变量,该变量仍存储在我的终端会话中.

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

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

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

猜你在找的Docker相关文章