17-Docker的數據持久化介紹
回顧容器與鏡像
容器是在鏡像之上創建的一層運行時層,這一層是可以讀寫的,我們能夠在容器內添加數據,讀取數據。
也就是說我們在創建容器的時候,我們能夠在容器內創建文件,安裝軟件等等,但是如果我們把這個容器停止并刪除了,那在這個容器內的所有操作都會沒有,鏡像是不會發生變化的,除非我們重新提交了一個鏡像。
持久化的產生
假如我們想創建一個數據庫容器,比如mysql容器,那么這個數據庫是要寫一些數據文件在本地文件內的,如果數據庫容器被刪除了,數據庫存儲的數據也就不見了,這是很不合理的。
其實docker是提供了數據持久化的機制。
這個機制就是 Volume,默認情況下容器所產生的數據是寫到容器這一層的,這一層會隨著容器的銷毀而銷毀。
但是我們可以通 Volume 掛載到本地或者一個地方存儲,那么數據和這個容器就隔離開了,也就是說容器銷毀并不會銷毀 Volume 的數據。
持久化數據的方案
- 基于本地文件系統的Volume。 可以在執行
Docker create
或者Docker run
時,通過-v
參數將主機的目錄作為容器的數據卷。這部分功能便是基于本地文件系統的Volume管理。 - 基于plugin的Volume。支持第三方的存儲方案,比如 NAS,aws。
aws是亞馬遜云,NAS 是遠程網絡網盤
Volume的類型
- 受管理的data Volume,由docker后臺自動創建。就是加不加
-v
參數,docker后臺都會創建一個 Volume。 - 綁定掛載的Volume,具體掛載位置可以由用戶指定。通過
-v
參數指定掛載的位置。