當管理員首次開始使用Docker容器時,一般會使其感到驚訝的是, 容器自己採用的是非永久性存儲。當容器被移除時, 容器的存儲也被移除了。數據庫
固然,若是沒有辦法實現永久存儲,則容器應用程序的使用將會很是受限。幸運的是,有些方法在容器化的環境中能夠實現持久存儲。儘管容器自己的原生存儲是非持久性的,但能夠將容器鏈接到容器外部的存儲區。此操做容許持久性數據的存儲,由於當容器中止時,該外部存儲不會被移除。服務器
決定如何爲容器實現持久存儲的第一步是肯定您將使用的存儲系統的基礎類型。在這方面, 一般有三種主要選項:文件系統存儲、塊存儲和對象存儲。這篇文章中,我將解釋每種類型的存儲之間的差別, 以及使用它們爲容器環境設置存儲時各會帶來什麼。分佈式
文件系統存儲是將數據存儲爲文件,這一存儲形式已存在數十年了。每一個文件都有一個文件名, 而且一般具備與其關聯的屬性。一些經常使用的文件系統包括NFS和NTFS。性能
當涉及到配置容器以持久存儲數據時,文件系統存儲是實現持久存儲數據的最廣泛的方法之一。最爲人所知的文件系統儲存示例(與容器相關)多是基於主機的持久性。阿里雲
基於主機的持久性背後的想法很是廣泛。容器駐留在主機服務器上。這個主機服務器包含它本身的操做系統和它本身的文件系統。能夠將容器配置爲在主機服務器的文件存儲的專用文件夾內存儲持久數據。Docker容器一般使用聯合文件系統將容器層組合成一個內聚的文件結構。基於主機的持久性繞過了須要持久存儲的數據的聯合文件系統,並藉助主機上使用的同一文件系統存儲數據。雲計算
普通主機持久性引發的主要問題是,它徹底破壞了容器的可移植性。當使用主機持久性時,依賴項資源(持久存儲)駐留在宿主服務器的原生文件系統的容器外。爲了解決此問題, 已經建立了其餘的主機持久性。例如,經過多主機持久性使用分佈式文件系統,來複制跨多個主機服務器的持久性存儲。spa
結論:文件系統存儲多是最笨拙的方法,由於文件系統在設計之初並無把可移植性歸入考慮範圍。然而,正如前文我所提到的,有一些方法能夠實現容器友好型的文件存儲系統,而這一般要經過跨多個服務器分佈文件系統來實現。操作系統
塊存儲是容器的另外一個存儲選項。如前所述,文件系統存儲將數據組織爲文件和文件夾的層次結構。相反,塊存儲存儲塊中的數據塊。塊僅經過其地址識別。塊沒有文件名,也沒有本身的元數據。只有當塊與其餘塊組合造成完整的數據塊時,它們才具備意義。設計
因爲其性能,塊存儲一般用於數據庫應用程序。塊存儲也一般用於提供快照功能,它容許將volume回滾到特定時間點,而無需還原備份。對象
對於容器,塊存儲有時以容器定義的存儲的形式實現。容器定義的存儲是一種軟件定義的存儲形式,但專門用於容器化環境中。此存儲一般在專用存儲容器內部實現。
Rancher Labs推出了本身的分佈式塊存儲項目,名爲Project Longhorn。Longhorn背後的基本思想相對簡單。
存儲系統能夠包含多個塊存儲volumes,而且這些volumes中的每個只能由單個主機加載。在這種狀況下,Longhorn試圖將塊存儲控制器劃分爲大量較小的塊存儲控制器,每一個存儲控制器均可以映射到不一樣的塊存儲volume。若是全部這些塊存儲volumes都駐留在物理磁盤的公共池中,那麼Longhorn方法將容許編排引擎根據須要建立塊存儲volumes。例如,能夠在建立容器的同時自動建立塊存儲volume。
結論:塊存儲比文件系統存儲更靈活,這樣更容易適應容器環境的塊存儲。惟一的挑戰是確保塊存儲數據在由多臺主機組成的環境中可用。這能夠經過分佈式存儲來解決。
對象存儲與文件系統存儲或塊存儲不一樣。它不是經過塊地址或文件名引用數據,而是將數據存儲爲對象並由對象ID引用。對象存儲的優勢在於它具備很強的伸縮性,而且在將屬性與對象相關聯方面具備高度的靈活性。使用對象存儲的缺點是它執行起來不如塊儲存。
因爲對象存儲主要是爲實現可伸縮性而設計的,所以它是公共雲提供商的熱門選擇。Docker容器能夠連接到Amazon Web Services或Microsoft Azure上的對象存儲,但這樣作須要專門設計容器化應用程序以利用對象存儲。而典型的應用程序可能被設計爲經過文件系統或SCSI調用訪問數據,對象存儲須要基於HTTP的REST調用,例如Get或Put。所以,應該將對象存儲保存在須要大規模可伸縮存儲的應用程序或需跨地域的存儲上。
結論:因爲依賴於REST調用,對象存儲可能更復雜。但對象存儲提供的可伸縮性使它成爲一個很好的選擇, 由於在容器環境中,大規模可伸縮性經常是你們優先考慮的。
9月27日,北京海航萬豪酒店,容器技術大會Container Day 2017即將舉行。
CloudStack之父、海航科技技術總監、華爲PaaS部門部長、恆豐銀行科技部總經理、阿里雲PaaS工程總監、民生保險CIO······均已加入豪華講師套餐!
11家已容器落地企業,15位真·雲計算大咖,13場純·技術演講,結合實戰場景,聚焦落地經驗。免費參會+超高規格,詳細議程及註冊連接請戳