Docker强制覆盖最后一个标记并推送AWS ECR

时间:2017-07-17 04:53:52

标签: amazon-web-services docker

我通过docker push ...命令将我的图像推送到AWS ECR。图像标有特定版本。

当我实际使用相同标签推送两个不同的图像时,这会在AWS ECR注册表中生成两个图像,一个图像变为无标记。

0.0.1 sha256:572219f8764b21e5a045bcc1c5eab399e2bc2370a37b23cb1ca9298ea39e233a 138.33 MB
      sha256:60d161db0b9cb1345cf7c3e6119b8eba7114bc2dfc44c0b3ed02454803f6ef76 138.21MB

这导致的问题是,如果我继续使用相同的标签推送更多图像,则存储库的总大小会不断增加。

我想要的是"覆盖"推送图像时的现有标签。这意味着使用相同标记的两个不同sha256摘要将导致注册表上的单个图像(当标记版本更改时当然是多个)。

有可能这样做吗?我想避免一个未标记的"如果可能的话修剪技术。目前,我的发布脚本删除了前一个相同的标记(如果存在),但我认为这应该由AWS ECR或docker push直接处理。

1 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的。您可以执行以下操作:

  1. 为要覆盖的图像使用2个不同的标签。我会建议使用带有版本的标签,以及带有已知前缀和可以保证唯一的东西的另一个标签,例如1.1.1和SNAPSHOT哈希。下次您推送具有相同版本的图像时,标记1.1.1将从旧图像中删除,并添加到新图像中。但是,SNAPSHOT- *标签将保留在所有图像中。
  2. 配置生命周期策略,其中从SNAPSHOT-开始的图像将在图像计数超过x之后过期。这样,旧图像将自动过期。