第 6 章 存儲 - 038 - Docker 的兩類存儲資源
存儲資源
Docker 為容器提供了兩種存放數據的資源:
- 由 storage driver 管理的鏡像層和容器層
- Data Volume
1、storage driver
容器由最上面一個可寫的容器層,以及若幹只讀的鏡像層組成,容器的數據就存放在這些層中。
這樣的分層結構最大的特性是 Copy-on-Write:
- 新數據會直接存放在最上面的容器層
- 修改現有數據會先從鏡像層將數據復制到容器層,修改後的數據直接保存在容器層中,鏡像層保持不變
- 如果多個層中有命名相同的文件,用戶只能看到最上面那層中的文件
storage driver 實現了多層數據的堆疊並為用戶提供一個單一的合並之後的統一視圖。
Docker 支持的 storage driver 有:
1、AUFS
2、Device Mapper
3、Btrfs
4、OverlayFS
5、VFS
6、ZFS
它們都能實現分層的架構,同時又有各自的特性。
應該使用哪個 storage driver 是一個難題,因為:
1、沒有哪個 driver 能夠適應所有的場景
2、driver 本身在快速發展和叠代
Docker 官方推薦:優先使用 Linux 發行版默認的 storage driver。
Docker 安裝時會根據當前系統的配置選擇默認的 driver。默認 driver 具有最好的穩定性,因為默認 driver 在發行版上經過了嚴格的測試。
運行 docker info 查看 Ubuntu 的默認 driver:
對於某些容器,直接將數據放在由 storage driver 維護的層中是很好的選擇,比如那些無狀態的應用。
1、無狀態容器:無狀態意味著容器沒有需要持久化的數據,隨時可以從鏡像直接創建。
例如: busybox,它是一個工具箱,不需要保存數據供以後使用,使用完直接退出
容器刪除時存放在容器層中的工作數據也一起被刪除
2、有狀態容器:它們有持久化數據的需求,容器啟動時需要加載已有的數據,容器銷毀時希望保留產生的新數據
-------------------------------------------引用來自---------------------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587706&idx=1&sn=a6c8320acc41fe47c7708b35360da473&chksm=8d3080e3ba4709f537a59137065b8d12cdb45c0fb71cd550302ed99ba2f895c0fcf8aa508a31&scene=21#wechat_redirect
第 6 章 存儲 - 038 - Docker 的兩類存儲資源