Virtualization
在 Docker 容器中執行的計算是否完全可重複?
我已經閱讀了題為“ Docker.io 與普通虛擬機有何不同? ”的問題,但我仍然不確定 Docker 容器的“虛擬”程度。例如,在科學環境中,可重複性非常重要。如果圖像在一台機器上產生特定結果,如果使用相同的圖像,計算在另一台機器上是否完全相同?
(我真的不知道不同的作業系統、核心、硬體或架構在什麼級別可以改變實踐中的計算,或者 Docker 在什麼層抽象事物,如果有的話。)
謝謝!:)
Docker 只是一個圍繞 LXC 容器的管理層,本質上是一個 Linux 風格的監獄。
LXC 容器使用與主機相同的處理器和核心,但使用它自己的庫(即容器文件系統內的庫)。
因此,為了可重複性,您需要確保所有這些屬性都是相同的。如果你已經有了關於 LXC 容器的答案,那麼它 100% 適用於 Docker 容器。
這實際上取決於您想到的計算:
- 像“將日期乘以 23”這樣的操作永遠不會是冪等的,因為時間會發生變化。
- 如果你的操作結果依賴於特定的核心設置,Docker 不能保證它在不同系統之間是相同的
- 如果您的操作依賴於網路延遲等外部物理因素,那麼即使是虛擬機也無濟於事。
也就是說,Docker 的主要目標之一是簡化可重複的操作。所以在大多數情況下,尤其是在我懷疑操作/計算的結果是否依賴於核心設置的科學環境中,Docker 似乎很合適。而且您不是第一個在這種環境中使用它的人:http: //bcbio.wordpress.com/2014/03/06/improving-reproducibility-and-installation-of-genomic-analysis-pipelines-with-docker/