官术网_书友最值得收藏!

2.1.3 容器存儲

1.鏡像元數據

在Linux系統中Docker的數據默認存放在/var/lib/docker中,基于不同的系統又有不同的存儲驅動和不同的目錄結構。我們以OCI標準格式來了解鏡像存儲的內容,如圖2-2所示。

圖2-2 鏡像存儲目錄

鏡像每一層的ID是該文件內容的散列校驗值,作為該層的唯一標識。獲取鏡像后,會使用以下方式索引鏡像:首先讀取鏡像的manifests文件,根據manifests文件中config的sha256碼,得到鏡像config文件,遍歷manifests文件里面的所有層(layer),根據其sha256碼在本地查找,拼出完整的鏡像。

2.存儲驅動

在理想情況下,我們使用掛載卷來存儲高讀寫的目錄,很少將數據直接寫入容器的可寫層。但是,總有一些需要直接寫入容器可寫層的特殊需求,這時候就需要存儲驅動來作為容器和宿主機之間的媒介。Docker依靠驅動技術來管理鏡像與運行它們的容器間的存儲和交互。

目前,Docker支持overlay2、aufs、fuse-overlayfs、devicemapper、btrfs、zfs、vfs等存儲驅動[5]。沒有單一的存儲驅動可適合所有的應用場景,要根據不同的場景選擇合適的存儲驅動,這樣才能有效提高Docker的性能。

3.數據卷

通常,有狀態的容器都有數據持久化存儲的需求。前一節提到過,文件系統的改動都是發生在最上面的可讀寫層。在容器的生命周期內它是持續的,包括容器被停止后。但是,當容器被刪除后,該數據層也隨之被刪除了。

因此,Docker采用數據卷(Volume)的形式向容器提供持久化存儲。數據卷是Docker容器數據持久化存儲的首選機制。綁定掛載(Bind Mounts)依賴于主機的目錄結構,但數據卷是由Docker管理的。

主站蜘蛛池模板: 铜鼓县| 巴塘县| 包头市| 都江堰市| 土默特左旗| 凉城县| 塘沽区| 基隆市| 剑川县| 六盘水市| 虞城县| 牡丹江市| 勃利县| 栾城县| 芦山县| 福建省| 通州区| 丹巴县| 新民市| 宜宾市| 望江县| 城市| 微山县| 宝坻区| 灌南县| 宜川县| 长乐市| 衡南县| 大姚县| 乐亭县| 马边| 尚义县| 武义县| 长寿区| 巩留县| 海兴县| 新民市| 涞水县| 长白| 鄂伦春自治旗| 东海县|