聯(lián)合文件系統(tǒng)(UnionFS)是一種分層、輕量級并且高性能的文件系統(tǒng),它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)。
聯(lián)合文件系統(tǒng)是 Docker 鏡像的基礎(chǔ)。鏡像可以通過分層來進(jìn)行繼承,基于基礎(chǔ)鏡像(沒有父鏡像),可以制作各種具體的應(yīng)用鏡像。
另外,不同 Docker 容器就可以共享一些基礎(chǔ)的文件系統(tǒng)層,同時(shí)再加上自己獨(dú)有的改動(dòng)層,大大提高了存儲(chǔ)的效率。
Docker 中使用的 AUFS(AnotherUnionFS)就是一種聯(lián)合文件系統(tǒng)。 AUFS 支持為每一個(gè)成員目錄(類似 Git 的分支)設(shè)定只讀(readonly)、讀寫(readwrite)和寫出(whiteout-able)權(quán)限, 同時(shí) AUFS 里有一個(gè)類似分層的概念, 對只讀權(quán)限的分支可以邏輯上進(jìn)行增量地修改(不影響只讀部分的)。
Docker 目前支持的聯(lián)合文件系統(tǒng)種類包括 AUFS, btrfs, vfs 和 DeviceMapper。