Docker 的兩類存儲資源-每天5分鐘玩轉 Docker 容器技術
我們從本章開始討論 Docker 存儲。
Docker 為容器提供了兩種存放數據的資源:
由 storage driver 管理的鏡像層和容器層。
Data Volume。
我們會詳細討論它們的原理和特性。
storage driver
在前面鏡像章節我們學習到 Docker 鏡像的分層結構,簡單回顧一下。
容器由最上面一個可寫的容器層,以及若干只讀的鏡像層組成,容器的數據就存放在這些層中。這樣的分層結構最大的特性是 Copy-on-Write:
新數據會直接存放在最上面的容器層。
修改現有數據會先從鏡像層將數據複製到容器層,修改後的數據直接保存在容器層中,鏡像層保持不變。
如果多個層中有命名相同的文件,用戶只能看到最上面那層中的文件。
分層結構使鏡像和容器的創建、共享以及分發變得非常高效,而這些都要歸功於 Docker storage driver。正是 storage driver 實現了多層數據的堆疊並為用戶提供一個單一的合并之後的統一視圖。
Docker 支持多種 storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。它們都能實現分層的架構,同時又有各自的特性。對於 Docker 用戶來說,具體選擇使用哪個 storage driver 是一個難題,因為:
沒有哪個 driver 能夠適應所有的場景。
driver 本身在快速發展和迭代。
不過 Docker 官方給出了一個簡單的答案:
優先使用 Linux 發行版默認的 storage driver。
Docker 安裝時會根據當前系統的配置選擇默認的 driver。默認 driver 具有最好的穩定性,因為默認 driver 在發行版上經過了嚴格的測試。
運行docker info
查看 Ubuntu 的默認 driver:
Ubuntu 用的 AUFS,底層文件系統是 extfs,各層數據存放在 /var/lib/docker/aufs。
Redhat/CentOS 的默認 driver 是 Device Mapper,SUSE 則是 Btrfs。
對於某些容器,直接將數據放在由 storage driver 維護的層中是很好的選擇,比如那些無狀態的應用。無狀態意味著容器沒有需要持久化的數據,隨時可以從鏡像直接創建。
比如 busybox,它是一個工具箱,我們啟動 busybox 是為了執行諸如 wget,ping 之類的命令,不需要保存數據供以後使用,使用完直接退出,容器刪除時存放在容器層中的工作數據也一起被刪除,這沒問題,下次再啟動新容器即可。
但對於另一類應用這種方式就不合適了,它們有持久化數據的需求,容器啟動時需要載入已有的數據,容器銷毀時希望保留產生的新數據,也就是說,這類容器是有狀態的。
這就要用到 Docker 的另一種存儲機制:Data Volume,下一節我們討論。
(本文轉載自博客園)
體驗別樣旅遊感受 中公教育推出全新互聯網+北京游,零利潤體驗10天9晚帝都風情:
http://www.ujiuye.com/zt/qgsqxly/?wt.bd=qzb36000j
想就業就就業,優就業就業扶持計劃,拿到滿意的工作offer就是這麼簡單
http://www.ujiuye.com/zt/jyfc/?wt.bd=qzb36000j
※當年懟《魔獸世界》的那波家長們,現在又來清算《王者榮耀》了?
※中公優就業河北交通職業技術學院Java實驗微課堂取得圓滿成功!
※ASP.NET Core 四種釋放 IDisposable 對象的方法
※NavigationView的頭部的事件監聽
TAG:IT優就業 |
※用 ConfigMap 管理配置-每天5分鐘玩轉 Docker 容器技術
※在 Scale Up 中使用 Health Check-每天5分鐘玩轉 Docker 容器技術
※Dockly:從終端管理 Docker 容器
※使用 Docker 容器化 Django Web 應用
※Docker 容器使用
※DockerCon:Docker發布管理軟體容器的新功能
※Docker 容器十誡
※通過 Docker 實現在 Linux 容器中運行 Microsoft SQL Server 資料庫
※Docker容器和數據可視化管理工具Flocker
※Docker 容器連接
※在Linux下使用Docker容器化技術搭建Web伺服器運行環境
※Google 計劃在 Chromebook 中增加容器化的 Linux 應用
※在docker for win中使用portainer管理容器
※windows7上使用docker容器
※阿里開源富容器引擎 PouchContainer的network 連接機制
※re:Invent 2018:AWS Marketplace新增大量應用容器和IoT工具
※容器化分散式日誌組件ExceptionLess的Angular前端UI
※Cloud Next:Google Cloud Run將無伺服器基礎設施帶入軟體容器
※容器化RDS:PersistentLocalVolumes和VolumeScheduling
※Cisco 設備中的linux容器