2014-12-04 182 views
5

正如標題所說,安全意味着......正確的方式?在Docker中提交正在運行的容器是否「安全」?

安全=一致,沒有數據丟失,專業,合法的方式。

希望與專業碼頭工具用戶分享一些經驗。

Q.提交是運行Docker容器安全(與快速變化的實時的東西,數據庫的東西之外,你自己的評論表示讚賞。)

是或否的答案是接受了評論。謝謝。

+1

也許這個答案我到以前類似的問題,可以幫助做...:http://stackoverflow.com/questions/24071148/is-it-safe-to-export-tarball-of-運行docker-container – mbarthelemy 2014-12-04 07:19:56

回答

4

所有的內存和硬盤存儲保存在容器實例中。您應該只要不使用任何外部安裝/泊塢窗卷和服務器(外部連接的數據庫?)就不會因爲停止/重新啓動和合並泊塢窗而陷入困境。請繼續閱讀,以深入探討此主題。

您可能最初想問自己的問題是,docker如何在運行時對其磁盤進行更改?什麼真的很好看,是碼頭實際上如何設法實現這個工作。容器硬盤的原始狀態是圖像中的原始狀態。它可以不是寫入這張圖片。與寫入圖像不同的是,與泊塢窗圖像中的內容相比,差異是由容器內部狀態的變化構成的。 Docker使用名爲「Union Filesystem」的技術,在Docker鏡像的初始狀態之上創建一個diff層。

此「diff」(在下圖中以可寫容器引用)存儲在內存中,並在刪除容器時消失。當您使用docker commit時,保留在容器臨時「狀態」中的可寫容器存儲在新映像中,但是:我不推薦這樣做。您的新碼頭圖像的狀態未在碼頭文件中顯示,並且無法從重建中輕鬆重新生成。製作一個新的dockerfile應該不難。所以這對我來說是個人的方式。

當您的碼頭工作於裝入的卷,外部服務器/數據庫時,您可能需要確保不會出現同步並暫時停止碼頭容器內的服務。當您使用dockerfile時,您可以在容器中啓動引導程序shell腳本來啓動連接,執行檢查並初始化運行過程以持久設置您的應用程序。再次,運行一個承諾的容器使得難以做到這樣的事情。

Union Filesystem

+0

您確定Docker將內存儲存在容器內嗎? – 2015-02-20 12:38:33

+0

在運行時,將內存分配給容器內的進程,就像停止的容器一樣,內存不再保留在容器內部運行的進程中,因爲它們停止了,並且我假定它必須保存到磁盤以便容器可重新啓動。 – RoyB 2015-02-23 20:57:14

+0

我會很感激這種行爲的一些證據鏈接,因爲在我的設置中'nginx'進程未能保存在保存的容器中。 – 2015-02-24 10:12:00

相關問題