天天看點

雲原生必備知識: 容器資料卷

所屬技術領域:

雲原生

| 名詞定義|

是一個可供一個或多個容器使用的特殊目錄。

可以達到以下目的:

1.繞過“拷貝寫”系統,以達到本地磁盤 IO 的性能,(比如運作一個容器,在容器中對資料卷修改内容,會直接改變主控端上的資料卷中的内容,是以是本地磁盤IO的性能,而不是先在容器中寫一份,最後還要将容器中的修改的内容拷貝出來進行同步。)

2.繞過“拷貝寫”系統,有些檔案不需要在 docker commit 打包進鏡像檔案。

3.在多個容器間共享目錄。

4.在宿主和容器間共享目錄。

5.在宿主和容器間共享一個檔案。

docker的理念将運作的環境打包形成容器運作,運作可以伴随容器,但是我們對資料的要求是希望持久化,容器之間可以共享資料,Docker容器産生的資料,如果不通過docker commit生成新的鏡像,使得資料作為容器的一部分儲存下來,那麼當容器被删除之後,資料也就沒了,為了能夠儲存資料,在docker容器中使用卷。卷就是目錄或者檔案,存在于一個或者多個容器中,但是不屬于聯合檔案系統,是以能夠繞過Union File System提供一些用于持久化資料或共享資料的特點。

| 技術特點|

• 資料卷可以在容器之間共享和重用

• 對資料卷的修改會立馬生效

• 對資料卷的更新,不會影響鏡像

• 資料卷預設會一直存在,即使容器被删除

| 相關詞|

Data Volume 資料卷: 是可以存放在一個或多個容器内的特定的目錄,提供獨立于容器之外的持久化存儲;是經過特殊設計的目錄,可以繞過聯合檔案系統(UFS),為一個或多個容器提供通路;

适用場景:

• 在多個容器之間共享資料,多個容器可以同時以隻讀或者讀寫的方式挂載統一個資料卷,進而共享資料卷中的資料

• 當主控端不能保證一定存在某一個目錄或一些固定的檔案路徑時,使用資料卷可以規避這種限制帶來的問題

• 當想把容器中的資料存儲在主控端之外的地方時,比如遠端主機上和雲存儲上

• 當你需要把容器資料在不同主控端之間備份、恢複或遷移時,資料卷是很好的選擇

資料覆寫問題

• 如果挂載一個空的資料卷到容器中的一個非空目錄中,那麼這個目錄下的檔案會被複制到資料卷中

• 如果挂載一個非空的資料卷到容器中的一個目錄中,那麼容器中的目錄會顯示資料卷中的資料。如果原來容器中的目錄有資料,那麼原始資料會被隐藏掉

這兩個規則都非常重要,靈活利用第一個規則可以幫助我們初始化資料卷中的内容。掌握第二個規則可以保證挂載資料卷後的資料總是你期望的結果。

資料來源:

  1. 名詞定義:簡書 https://www.jianshu.com/p/9c45a6d4496a
  2. 技術特點:CSDN社群 https://blog.csdn.net/fanfan4569/article/details/80705720
  3. 适用場景:CSDN社群 https://blog.csdn.net/weixin_34281477/article/details/92102336