在Docker容器中执行的计算是否可重复?

我已经阅读了题为“ Docker.io与普通虚拟机有什么不同? ”的问题,但我仍不确定“虚拟”docker容器是如何的。 例如,在科学环境中,可重复性非常重要。 如果图像在一台机器上产生了一定的结果,如果使用相同的图像,计算是否完全相同?

(我不知道在不同的操作系统,内核,硬件或者体系结构在什么层次上可以改变实际的计算,或者Docker在什么层面上抽象的东西)。

谢谢! 🙂

Docker只是一个围绕LXC容器的pipe理层,基本上是一个Linux风格的监狱。

LXC容器使用与主机相同的处理器和内核,但使用它自己的库(即容器文件系统内的库)。

所以对于可重复性,您需要确保所有这些属性都是相同的。 如果您已经对LXC容器有这个答案,那么它是100%适用于Docker容器。

这真的取决于你想到的计算:

  • 像“23日倍数”这样的操作从来就不是幂等的,因为时间在变化。
  • 如果您的操作结果取决于特定的内核设置,则Docker无法保证在不同的系统上它是相同的
  • 如果你的操作取决于外部的物理因素,比如networking延迟甚至虚拟机都无济于事。

也就是说,Docker的主要目标之一是缓解可重复的操作。 所以在大多数情况下, 特别是在科学环境下,我怀疑操作/计算的结果取决于内核设置,所以Docker看起来非常合适。 而且你不是第一个在这样的环境中使用它: http : //bcbio.wordpress.com/2014/03/06/improving-reproducibility-and-installation-of-genomic-analysis-pipelines-with-docker/