Docker存儲方式總結

docker四種存儲方式

docker四種方式:默認、volumes數據卷、bind mounts掛載、tmpfs mount(僅在linux環境中提供),其中volumes、bind mounts兩種實現持久化容器數據;

  • 默認:數據保存在運行的容器中,容器刪除後,數據也隨之刪除;
  • volumes:數據卷,數據存放在主機文件系統/var/lib/docker/volumes/目錄下,該目錄由docker管理,其它進程不允許修改,推薦該種方式持久化數據;
  • Bind mounts:直接掛載主機文件系統的任何目錄或文件,類似主機和容器的共享目錄,主機上任何進程都可以訪問修改,容器中也可以看到修改,這種方式最簡單。
  • tmpfs:數據暫存在主機內存中,不會寫入文件系統,重啓後,數據刪除。

下圖展示了Volumes,Bind mounts和tmpfs mounts三種存儲技術的不同:

1、Volumes使用場景

  • 在多個容器間共享數據。
  • 無法確保Docker主機一定擁有某個指定的文件夾或目錄結構,使用Volumes可以屏蔽這些宿主機差異。
  • 當你希望將數據存儲在遠程主機或雲提供商上。
  • 當你希望備份,恢復或者遷移數據從一臺Docker主機到另一臺Docker主機,Volumes是更好的選擇。

2、Bind mounts使用場景

  • 在宿主機和容器間共享配置文件。例如將nginx容器的配置文件保存在宿主機上,通過Bind mounts掛載後就不用進入容器來修改nginx的配置了。
  • 在宿主機和容器間共享代碼或者build輸出。例如將宿主機某個項目的target目錄掛載到容器中,這樣在宿主機上Maven build出一個最新的產品,可以直接咋i容器中運行,而不用生成一個新的鏡像。
  • Docker主機上的文件或目錄結構是確定的

3、tmpfs mounts使用場景

  1. 當你因爲安全或其他原因,不希望將數據持久化到容器或宿主機上,那你可以使用tmpfs mounts模式。

4、Bind mounts和Volumes行爲上的差異

  • 如果你將一個空Volume掛載到一個非空容器目錄上,那麼這個容器目錄中的文件會被複制到Volume中,即容器目錄原有文件不會被Volume覆蓋。
  • 如果你使用Bind mounts將一個宿主機目錄掛載到容器目錄上,此容器目錄中原有的文件會被隱藏,從而只能讀取到宿主機目錄下的文件

參考:

https://blog.csdn.net/MePlusPlus/article/details/93048917

https://www.jianshu.com/p/ef0f24fd0674

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章