15.overlay和overlay2對比介紹


關於OverlayFS的鏡像分層與共享,先說幾個重要的結論

1.overlay驅動只能工作在兩層之上。也就是說多層鏡像不能用多層OverlayFS實現。替代的,每個鏡像層在/var/lib/docker/overlay中用自己的目錄來實現,使用硬鏈接這種有效利用空間的方法,來引用底層分享的數據。注意:Docker1.10之后,鏡像層ID和/var/lib/docker中的目錄名不再一一對應。

2.overlay驅動只工作在一個lower OverlayFS層之上,因此需要硬鏈接來實現多層鏡像

$ mount | grep overlay

overlay on /var/lib/docker/overlay/ec444863a55a.../merged
type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay/55f1e14c361b.../root,
upperdir=/var/lib/docker/overlay/ec444863a55a.../upper,
workdir=/var/lib/docker/overlay/ec444863a55a.../work)

3.但overlay2驅動原生地支持多層lower OverlayFS鏡像(最多128層)

$ mount | grep overlay

overlay on /var/lib/docker/overlay2/9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/merged
type overlay (rw,relatime,
lowerdir=l/DJA75GUWHWG7EWICFYX54FIOVT:l/B3WWEFKBG3PLLV737KZFIASSW7:l/JEYMODZYFCZFYSDABYXD5MF6YO:l/UL2MW33MSE3Q5VYIKBRN4ZAGQP:l/NFYKDW6APBCCUCTOUSYDH4DXAT:l/6Y5IM2XC7TSNIJZZFLJCS6I4I4, upperdir=9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/diff,
workdir=9186877cdf386d0a3b016149cf30c208f326dca307529e646afce5b3f83f5304/work)

4.本質區別是鏡像層之間共享數據的方法不同

overlay共享數據方式是通過硬連接
而overlay2是通過每層的 lower文件

5.overlay2中link文件描述了該層標識符的精簡版,在overlay2每層的內容都是不一樣的,diff是文件系統的統一掛載點,link文件描述的是該層的標識符,lower文件描述了層與層之間的組織關系,overlay2是將底層多個lowerdir和upperdir和workdir聯合掛載,形成最終的merged掛載點。

6.overlay2為什么比overlay不消耗inode,根本原因在於那些文件夾,每層的root目錄內存放的都是完整的rootfs文件夾,但它們都是新建出來
的,它們inode都不一樣,所以在overlay下一個容器鏡像層數越多,占用的inode就越多 參考:https://www.bladewan.com/2018/01/25/docker_storage_driver/

 

參考:

https://arkingc.github.io/2017/05/05/2017-05-05-docker-filesystem-overlay/

https://blog.csdn.net/styshoo/article/details/60715942

https://www.cnblogs.com/iiiiher/p/8037719.html

https://zhuanlan.zhihu.com/p/41958018

https://www.cnblogs.com/elnino/p/11015076.html

https://www.bbsmax.com/A/obzb0ND65E/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM