那些在push上构建Docker映像的人--随着时间的推移,您如何管理不同的版本?
发布于 2016-12-12 03:35:43
随着时间的推移,您如何管理不同的版本?
首先要注意的是,随着时间的推移,标签不能被信任。它们不能保证引用相同的东西或者继续存在,所以使用Dockerfile LABEL,它将保持一致,并且总是与图像一起存储,label-schema.org是一个很好的起点。
他们都有自己的标签吗?您是否根据git哈希进行标记?
如果您需要一些独特的东西来引用每个构建,只需使用图像sha256和。如果希望向映像附加额外的构建元数据,请使用前面提到的LABEL,并包括git哈希和任何您想要的版本控制系统。如果使用sha256和听起来很难,那么仍然需要标记来引用多个映像版本,所以您需要一些系统。
Git标签,日期时间,构建数字都可以工作。每个版本都有各自的优点和缺点,取决于您的环境以及您试图将其作为“发布版”的内容。值得注意的是,Docker映像可能来自带有git哈希的Dockerfile,但如果您在其他地方获取图像FROM,则从该git哈希构建的图像将不会随着时间的推移而产生一致的图像。
你会在一段时间后删除旧图像吗?
保留完全取决于您的软件/系统/公司需求或策略。我看到了审计要求很高的环境,这增加了构建/发布保留时间,直到“我希望在此构建上重新运行这些测试”。其他环境的审计很少,这往往会降低保留要求。有些地方甚至根本不尝试实施任何版本管理(这很糟糕)。对于您的特定环境,这里的人并不能真正回答这一点,虽然这是一个好主意。
基本要求是为每个生产版本存储一个伪制品。这通常是“永远”的历史目的。积极回顾一两个版本是非常罕见的(同样,这可以取决于您的应用程序),所以存档是一个好主意,而且很容易使用廉价存储/托管的第二个注册表,它可以推送所有内容的副本(即不是在您宝贵的ssd的副本上)。
随着时间的推移,我从未见过需要保留所有的开发构建。保留通常遵循您的开发/发行周期。很少需要访问当前版本+下一个版本中的dev构建。只需记住标记+标记开发构建适当,所以清理是简单的。-dev -snapshot -alpha.0之类的。
它们不是占用了很多空间(1GB+)吗?
通常比你想象的要少,但是是的,它们可以很大,因为在您的应用程序之上,您有一个OS映像。这就是为什么很多人开始使用阿尔卑斯,因为它比大多数发行版都要小,只要您没有任何与musl libc不兼容的东西。
https://stackoverflow.com/questions/41092801
复制相似问题