導(dǎo)讀:專家Brien Posey向我們講述了Docker架構(gòu)會對備份產(chǎn)生哪些影響,以及備份Docker數(shù)據(jù)的最佳方法。
Brien M. Posey是一位微軟認證系統(tǒng)工程師,曾獲微軟Exchange Server、Windows Server 和Internet Information Server (IIS)的MVP獎。Brien擔(dān)任一個全國連鎖性醫(yī)院的CIO,曾經(jīng)在Fort Knox負責(zé)信息管理系。
盡管市場上主要的備份廠商都很善于備份虛擬機(VM),但Docker容器并不依賴于虛擬機管理程序(hypervisor)。此外,Docker及其各種組件通過Docker引擎與主機操作系統(tǒng)相分離,Docker引擎為其上的虛擬化應(yīng)用提供運行環(huán)境和安全保障。
由于采用了不同的系統(tǒng)架構(gòu),Docker數(shù)據(jù)備份與虛擬機備份顯著不同。雖然每家虛擬機管理程序供應(yīng)商的產(chǎn)品都有自己的細微差別,但虛擬機通常包括一個或多個虛擬硬盤(VHD)文件和一個配置文件。備份應(yīng)用就是要保護配置文件并能夠提取VHD里的內(nèi)容。
不依賴于VHDs,Docker采用的是一種分層方法。最底層是只讀的平臺鏡像文件,它為容器化的應(yīng)用定義了運行時(run-time)環(huán)境。
容器層位于平臺鏡像層之上,并存儲配置數(shù)據(jù)(與虛擬機架構(gòu)中存儲于配置文件中的配置數(shù)據(jù)相對應(yīng))。容器層作為應(yīng)用程序沙箱,進行讀/寫操作。
保護容器層的一個難點是有可能會有多個容器層。如果一組寫操作需要被提交,以便使其成為持久性數(shù)據(jù),容器會轉(zhuǎn)變?yōu)橐粋€分層鏡像,并在其上創(chuàng)建出一個新的讀/寫容器。因此,一個Docker應(yīng)用可能包含一個平臺鏡像層,一個容器層和數(shù)量不確定的鏡像層。
如何應(yīng)對備份Docker數(shù)據(jù)的挑戰(zhàn),目前的最好方法是采用Docker感知(Docker-aware)的備份應(yīng)用程序或編寫一個腳本。有些Docker的博客建議使用腳本將Docker容器和卷復(fù)制到一個壓縮包里加以保管。