当推送更新的docker版本时,AWS ECR层已经存在



场景:创建了一个新的ECR私人回购,并成功地推送了一位新的码头工人。然后使用该docker映像来承载应用程序。现在应用程序需要一些更新的API,所以:

  1. 对代码进行了更改
  2. 按照AWS命令,在不同版本号的同一repo中推送更新的docker镜像。此外,在创建docker时,我从电脑上删除了本地docker映像,并使用了--no-cache标记

上传时,除了1(大小约为32 mb)外,所有层的Layers都已退出,它在10秒内被推送。在ECR上,我可以看到图像的新更新版本,其大小与前一版本相同,但仅在5,10秒内推送了大约32 mb的层。这是什么意思?我试了几次整个过程,随机一次它说除了2之外,所有层都已经存在。这一次推送了一个具有适当图像大小(约330mb)的层。

有人能解释一下,用正确的图片推送更新你的ECR版本的最佳方式是什么吗?

在Mac上,您可以进入Docker应用程序并删除图像。

在linux上(我希望有人能发布一个"真正的"解决方案),我手动删除所有图像和所有容器,因为我只使用Docker上传到AWS ECR。

首先。

通过运行docker info找到你的docker图像所在的位置,我的是overlay2,所以/var/lib/docker/overlay2是参考的路径

第二。

我运行以下命令:

sudo rm -rf /var/lib/docker/overlay2/* # delete 
docker system prune -a  # delete docker containers
systemctl restart docker # restart docker to fix deleted necessary files

这不是一个大问题,因为当我们谈论docker镜像时,它有多个构建层,所以当你在aws-ecr上推送它时,它会推送ecr存储库中的多个镜像层,当你更新你的更改并构建这个镜像并在ecr中推送新版本的镜像时,因为其他层已经在ecr存储库中可用。我希望你能理解这一点。

最新更新