Docker鏡像是由多個文件系統疊加而成,當啟動一個容器的時候,Docker會加載只讀鏡像層并在上面添加一個讀寫層。當刪除Docker容器并通過該鏡像重新啟動時,之前的更改將會丟失。為了能夠保存數據以及共享容器間的數據,Docker提出了數據卷的概念。簡單來說,數據卷就是目錄或者文件,它可以繞過默認的聯合文件系統,以正常的文件或者目錄的形式存在于主機上。
在Docker中,數據卷只是磁盤或另一容器中的目錄。其生命周期不受管理,且Docker現在提供的卷驅動程序功能非常有限。容器引擎CCE采用的是Kubernetes的數據卷的概念,Kubernetes數據卷具有完善的生命周期管理,支持多種類型的數據卷,同時實例可以使用任意數量的數據卷。
云容器引擎支持四類本地磁盤掛載類型:支持hostPath、emptyDir、configMap、secret。各類型說明如下:
hostPath:指定主機中的文件或目錄掛載到容器的某一路徑中;
EmptyDir:用于臨時存儲,生命周期與容器實例相同。容器實例消亡時,EmptyDir會被刪除, 數據會永久丟失;
ConfigMap:將配置文件中的key映射到容器中,可以用于掛載配置文件到指定容器目錄;
Secret:將密鑰中的數據掛載到指定的容器路徑。
1.在創建應用或升級應用流程中,進去容器設置步驟,點擊【數據存儲】,點擊【添加本地磁盤】,進入本地磁盤添加頁面;
1)卷類型選擇hostPath,表示在容器上掛載宿主機上的文件或目錄。通常用于“容器應用程序生成的日志文件需要永久保存”或者“需要訪問宿主機上Docker引擎內部數據結構的容器應用”,具體參數說明如下所示:
| 參數 | 參數說明 |
| 存儲類型 | 選擇主機路徑 |
| 主機路徑 | 輸入主機路徑,如/tmp |
| 掛載路徑 | 數據卷掛載到容器上的路徑 注意: 請不要掛載在系統目錄下,如“/”、“/var/run”等,會導致容器異常。建議掛載在空目錄下,若目錄不為空,請確保目錄下無影響容器啟動的文件,否則文件會被替換,導致容器啟動異常,應用創建失敗 |
| 子路徑 | 相對路徑 |
| 權限 | 只讀:只能讀容器路徑中的數據卷; 讀寫:可修改容器路徑中的數據卷,容器遷移時新寫入的數據不會隨之遷移,會造成數據丟失; |
2)卷類型選擇emptyDir:容器分配到節點時系統將自動創建卷,初始內容為空。在同一個Pod中所有容器可以讀寫emptyDir中的相同文件。當Pod從節點上移除時,empryDir中的數據也會永久刪除。通常用于臨時數據的高速存儲,具體參數說明如下所示:
| 參數 | 參數說明 |
| 存儲類型 | 選擇臨時路徑 |
| 磁盤介質 | 不勾選:存儲在硬盤上,適用于數據量大,讀寫效率要求低的場景 勾選:存儲在內存中,適用于數據量少,讀寫效率要求高的場景 |
| 掛載路徑 | 數據卷掛載到容器上的路徑。 注意:請不要掛載在系統目錄下,如“/”、“/var/run”等,會導致容器異常。建議掛載在空目錄下,若目錄不為空,請確保目錄下無影響容器啟動的文件,否則文件會被替換,導致容器啟動異常,應用創建失敗 |
| 權限 | 只讀:只能讀容器路徑中的數據卷 可寫:可修改容器路徑中的數據卷,容器遷移時新寫入的數據不會隨之遷移,會造成數據丟失 |
3)卷類型選擇configMap:平臺提供應用代碼和配置文件的分離,configMap用于處理應用配置參數。用戶需要提前創建應用配置,操作步驟請參見創建配置項,臨時數據的高速存儲,具體參數說明如下所示:
| 參數 | 參數說明 |
| 存儲類型 | 選擇配置項 |
| 配置項 | 選擇已經建立好的配置項 說明:configMap需要提前創建 |
| 掛載路徑 | 數據卷掛載到容器上的路徑 |
| 權限 | 只讀:只能讀容器路徑中的數據卷 |
4)卷類型選擇secret:用戶需要提前創建私密憑據,操作步驟請參見創建私密憑據,臨時數據的高速存儲,具體參數說明如下所示:
| 參數 | 參數說明 |
| 存儲類型 | 選擇私密憑據 |
| 卷類型 | 選擇已經創建好的私密憑據 說明:secret需要提前創建,請參見 創建私密憑據 |
| 掛載路徑 | 數據卷掛載到容器上的路徑 |
| 權限 | 只讀:只能讀容器路徑中的數據卷 |
2.點擊【添加容器掛載】,可新增掛載項,點擊【刪除】可刪除之前的容器掛載配置;
3.點擊【確定】,完成本地磁盤的添加。