當前位置:
首頁 > 知識 > Docker 的兩類存儲資源-每天5分鐘玩轉 Docker 容器技術

Docker 的兩類存儲資源-每天5分鐘玩轉 Docker 容器技術

我們從本章開始討論 Docker 存儲。

Docker 為容器提供了兩種存放數據的資源:

  1. 由 storage driver 管理的鏡像層和容器層。

  2. Data Volume。

我們會詳細討論它們的原理和特性。

storage driver

在前面鏡像章節我們學習到 Docker 鏡像的分層結構,簡單回顧一下。

Docker 的兩類存儲資源-每天5分鐘玩轉 Docker 容器技術

容器由最上面一個可寫的容器層,以及若干只讀的鏡像層組成,容器的數據就存放在這些層中。這樣的分層結構最大的特性是 Copy-on-Write:

  1. 新數據會直接存放在最上面的容器層。

  2. 修改現有數據會先從鏡像層將數據複製到容器層,修改後的數據直接保存在容器層中,鏡像層保持不變。

  3. 如果多個層中有命名相同的文件,用戶只能看到最上面那層中的文件。

分層結構使鏡像和容器的創建、共享以及分發變得非常高效,而這些都要歸功於 Docker storage driver。正是 storage driver 實現了多層數據的堆疊並為用戶提供一個單一的合并之後的統一視圖。

Docker 支持多種 storage driver,有 AUFS、Device Mapper、Btrfs、OverlayFS、VFS 和 ZFS。它們都能實現分層的架構,同時又有各自的特性。對於 Docker 用戶來說,具體選擇使用哪個 storage driver 是一個難題,因為:

  1. 沒有哪個 driver 能夠適應所有的場景。

  2. driver 本身在快速發展和迭代。

不過 Docker 官方給出了一個簡單的答案:

優先使用 Linux 發行版默認的 storage driver

Docker 安裝時會根據當前系統的配置選擇默認的 driver。默認 driver 具有最好的穩定性,因為默認 driver 在發行版上經過了嚴格的測試。

運行docker info查看 Ubuntu 的默認 driver:

Docker 的兩類存儲資源-每天5分鐘玩轉 Docker 容器技術

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

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

當年懟《魔獸世界》的那波家長們,現在又來清算《王者榮耀》了?
中公優就業河北交通職業技術學院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容器