当我推送具有相同标签的新图像时,ECR 中具有最新标签的旧图像会发生什么情况?

Nit*_*n k 7 amazon-web-services amazon-ecs docker amazon-ecr aws-fargate

所以,我是 ECR/ECR 新手,我已经将带有最新标签的图像推送到我的存储库中。但是,当我将另一个带有最新标签的图像推送到同一个存储库时会发生什么?旧的标签会改变吗,因为我希望它们在那里。另外,我不能每次都更改标签,因为我编写了如下管道。是否需要将镜像重新部署到ECS上?或者当我们将新图像推送到 ECR 时它会自动完成吗?

stage('docker image') {
            steps {
                   sh  ''' #!/bin/bash
                    set -x
                    cd $WORKDIR/search-adapter-service
                    if [[ -f "/home/jenkins/.m2/settings.xml" ]]
                    then
                       mv /home/jenkins/.m2/settings.xml /home/jenkins/.m2/settings.xml_back
                    fi
                    
                    $WORKDIR/apache-maven-3.6.3/bin/mvn clean install                    
                    '''
                    dir("$WORKDIR/search-adapter-service"){
                      script{
                         sh(script: "sudo docker build -t ${DOCKER_REGISTRY_REPO}:latest .")
                         sh(script: "sudo docker push ${DOCKER_REGISTRY_REPO}:latest")
Run Code Online (Sandbox Code Playgroud)

1.我希望它能自动更改旧图像的标签。2.它也会自动部署到ECS吗?一旦我们推动?还是我们需要手动完成?如果可以自动化的话。我们如何实现这一目标?

Mar*_*k B 8

带有标签的旧图像latest仍将位于 ECR 中,只是将latest标签从中删除。如果它有其他标签,那么其他标签仍然可以访问它。如果它没有其他标签,则必须使用 docker 映像 ID(摘要)来对其进行寻址。所有这些都可以在 ECR Web 控制台中看到。

当您将新映像推送到 ECR 时,ECS 不会自动部署。您需要通过以下命令触发 ECS 部署:

aws ecs update-service --cluster <cluster> --service <service> --force-new-deployment
Run Code Online (Sandbox Code Playgroud)