在Linux上,docker守護(hù)進(jìn)程有幾種不同的鏡像層存儲(chǔ)驅(qū)動(dòng)程序支持:aufs,devicemapper,btrfs,zfs,overlay,overlay2,和fuse-overlayfs。
該aufs驅(qū)動(dòng)程序是最早的,但是基于Linux內(nèi)核補(bǔ)丁集,該補(bǔ)丁集不太可能合并到主內(nèi)核中。還已知這些會(huì)導(dǎo)致嚴(yán)重的內(nèi)核崩潰。但是,aufs允許容器共享可執(zhí)行文件和共享庫(kù)內(nèi)存,因此在使用相同程序或庫(kù)運(yùn)行數(shù)千個(gè)容器時(shí),這是一個(gè)有用的選擇。
該devicemapper驅(qū)動(dòng)程序使用自動(dòng)精簡(jiǎn)配置和寫時(shí)拷貝(全體)的快照。通常,對(duì)于每個(gè)devicemapper圖形位置, /var/lib/docker/devicemapper基于兩個(gè)塊設(shè)備創(chuàng)建一個(gè)精簡(jiǎn)池,一個(gè)用于數(shù)據(jù),另一個(gè)用于元數(shù)據(jù)。
默認(rèn)情況下,這些塊設(shè)備是通過(guò)使用自動(dòng)創(chuàng)建的稀疏文件的環(huán)回安裝來(lái)自動(dòng)創(chuàng)建的。有關(guān)如何自定義此設(shè)置的方法,請(qǐng)參閱下面的Devicemapper選項(xiàng)。 ?jpetazzo /使用Device Mapper插件調(diào)整Docker容器大小的 文章介紹了如何在不使用選項(xiàng)的情況下調(diào)整現(xiàn)有設(shè)置。
該btrfs驅(qū)動(dòng)程序的運(yùn)行速度非常快docker build-但就像devicemapper 在設(shè)備之間不共享可執(zhí)行內(nèi)存一樣。使用 dockerd -s btrfs -g /mnt/btrfs_partition。
該zfs驅(qū)動(dòng)程序的速度可能不及該驅(qū)動(dòng)程序,btrfs但其穩(wěn)定性方面的記錄更長(zhǎng)。由于Single Copy ARC克隆之間共享的塊,因此將僅緩存一次。使用dockerd -s zfs。zfs.fsname如ZFS options中所述,選擇不同的zfs文件系統(tǒng)set選項(xiàng)。
這overlay是一個(gè)非常快速的聯(lián)合文件系統(tǒng)。從3.18.0開始,它現(xiàn)在已合并到主要的Linux內(nèi)核中。overlay 它還支持頁(yè)面緩存共享,這意味著訪問(wèn)同一文件的多個(gè)容器可以共享一個(gè)(或多個(gè))頁(yè)面緩存條目,這使得 overlay內(nèi)存與aufs驅(qū)動(dòng)程序一樣高效。打電話dockerd -s overlay 使用它。
它們overlay2使用相同的快速聯(lián)合文件系統(tǒng),但是利用Linux內(nèi)核4.0中添加的 其他功能來(lái)避免過(guò)多的inode消耗。
該fuse-overlayfs驅(qū)動(dòng)程序類似于overlay2但在用戶空間中工作。該fuse-overlayfs驅(qū)動(dòng)程序應(yīng)用于無(wú)根模式。
在Windows上,Docker守護(hù)程序根據(jù)映像平臺(tái)支持單個(gè)映像層存儲(chǔ)驅(qū)動(dòng)程序:windowsfilter對(duì)于Windows映像,以及 lcow對(duì)于Windows上的Linux容器。








