概述:
OverlayFS是UnionFS实现技术之一,是docker使用的主流技术。
OverlayFS 主要有三个参数
- lowerdir:底层文件系统目录,通常包含的是只读文件系统
- upperdir:是 OverlayFS 的可写层。当对挂载的目录修改时,这些修改会写入
upperdir目录。 - workdir:临时工作空间,主要用于容器修改文件时进行缓存
具体使用方式:
本示例仅仅是做一个样例,便于理解
- 首先要有一个测试文件夹
bash
mkdir overlayFsDemo

- 进入到测试文件夹,并创建需要联合的文件夹以及临时工作文件夹
bash
mkdir lower upper work

- 为每一个文件夹添加文件
bash
echo "hello-upper" > ./upper/upper.txt
echo "hello-lower" > ./lower/lower.txt
echo "hello-work" > ./work/work.txt
bash
echo "merge-lower" > ./lower/merge.txt
echo "merge-upper" > ./upper/merge.txt
echo "merge-work" > ./work/merge.txt

- 创建挂载的文件夹,并挂载
bash
mkdir merged
mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged

- 结果
上述lowerdir和upperdir的内容都被挂载到merged中了,workdir不参与联合,可以进行查看
bash
tree -a merged

对被挂载的文件夹中的内容修改,都会反映到挂载的目录中,如我们对lower文件夹中的文件修改
bash
echo "hello-lower-fixed" > ./lower/lower.txt
cat merged/lower.txt

对于文件名冲突的文件,上层的会覆盖下层的,如我们对lower文件夹中的mearged文件修改
bash
echo "merge-lower-fixed" > ./lower/merge.txt
cat merged/merge.txt
可以看到还是只显示最上层的

对挂载的目录修改,会看到upper目录也被修改
bash
echo "hello-merge" > ./merged/merge.txt
cat ./merged/merge.txt
cat ./upper/merge.txt
