amazon-web-services - 推送更新的 docker 版本时,AWS ECR 层已经存在
问题描述
场景:创建了一个新的 ECR 私有仓库并成功推送了一个新的 docker。然后使用该 docker 映像来托管应用程序。现在应用程序需要一些更新的 API,所以:
- 对代码进行了更改。
- 按照 AWS 命令将更新的 docker 镜像推送到具有不同版本号的同一仓库中。此外,在创建 docker 时,我从我的 pc 中删除了本地 docker 图像并使用了 --no-cache 标记。
上传时,除了 1 层(大小约为 32 mb)外,所有层的层都已退出,它在 10 秒内被推送。在 ECR 上,我可以看到图像的新更新版本,其大小与以前的版本相同,但仅在 5.10 秒内推送了大约 32 mb 层。这是什么意思?我尝试了整个过程几次,随机一次它说所有层都已经存在层,除了 2。这次推送了一个具有适当图像大小(大约 330 mb)的层。
有人能解释一下用正确的图像推送更新 ECR 版本的最佳方法是什么吗?
解决方案
这不是一个大问题,因为当我们谈论 docker 镜像时,它有多个构建层,所以当您在 aws ecr 上推送它时,它会在 ecr 存储库中推送多层镜像,当您更新更改并构建此镜像时在 ecr 中推送新版本的镜像它只推送 docker 镜像的更新层,因为其他层已经在您的 ecr 存储库中可用。我希望你明白这一点。
推荐阅读
- scala - SBT 多项目设置,其中子项目的构建文件依赖于非托管 JAR
- python - 编写一个 Python 程序来猜测 1 到 9 之间的数字
- c# - 是否可以仅从磁盘加载图像的一部分?
- excel - 延迟 SAP 直到对话窗口打开
- java - 如何将数据从谷歌电子表格存储到数据库(:-只有第一行被存储到数据库中
- android - 在室内位置显示信标和人员
- visual-studio - Azure 内存工作集与。Visual Studio 进程内存
- postgresql - 在某些命令终端不允许写入之后
- android - 是否可以在 Debug View Firebase 上看到 DevExtreme 应用?
- sass - 在自定义 _variables.scss 中使用时,覆盖引导程序 4 $primary 变量未全局应用