在我们的开发工作流程中,我们构建镜像,将它们推送到注册表,然后在暂存集群中从它们部署服务。工作流程因大量图像推送而严重陷入困境,因为在不同工作站上由完全相同的代码库构建的层往往最终具有不同的哈希值。我们确实了解 docker 的工作原理(即一点变化,层发生变化;一层发生变化,所有后续层也发生变化),但我们仍然相信有很多层失效正在发生,我们所做的任何事情都无法解释到我们的代码库或依赖项,并且完全是由于在不同机器上执行的构建。原则上,我们的构建并不太依赖于平台(我们不会将任何东西编译成机器代码),而且这些机器无论如何都是 x86_64 linux 机器。
有哪些工具、策略和最佳实践可以帮助我们调试为什么会发生这种情况并可能缓解这种情况?
(重要提示:我们目前绝对负担不起的一个已知最佳实践是将构建过程转移到可能在云中的单个专用机器上。请不要建议此解决方案)。