可重复的Docker构build – 长期存储/恢复

我有一个系统,我想使用Docker进行构build,并满足以下要求:

  1. 我的(Mercurial / git / …)存储库的特定版本始终使用特定的Docker镜像(和特定版本)构build。
  2. 有可能(在将来的某个时候)我们的Dockerregistry发生变化(不同的位置,不同的版本,不同的存储图像的方式…)。

我一直在寻找几种方式来与Docker做到这一点,但我总是遇到潜在的问题。

如果我使用Docker摘要,条件2显然不能保证,因为在某个时间点将图像移动到另一个registry可能导致摘要更改: https : //github.com/docker/distribution/issues/1662#issuecomment -213079540

如果我使用Docker标签,条件1不能保证,因为有人可能只需将新的图像版本推送到同一个标签。

直接使用Docker的图像ID不会是一个选项,因为我不能拉一个Docker的图像ID。

有什么我失踪,或者我会一直失去条件1或条件2? 确保我们仍然可以在与原始构build相同的条件下构build(非常)旧版本的软件,这将是一个很好的方法吗?