结合《docker进阶与实战中》中的例子理解overlayFS

来源:互联网 发布:e订通软件 编辑:程序博客网 时间:2024/06/09 21:14

这部分对应的内容在书的38页

mount -t overlay overlay -olowerdir = material:material2,upperdir=build,workdir=work merge

其实,这里的material和material2都是镜像层(lowerdir),build是容器层(upperdir),新创的容器这里是空的,用于做相应的更改,而merge是结合之后的统一的那一层,也就是container mount,work是overlayFS所必须的一个空目录;

1 覆盖

其实就是在merge层显示了build层和material层的内容,我们可以看到有重复的部分会有覆盖

2新增

创建frame文件,在容器层和镜像层都没有,会在可写的容器曾创建frame文件,统一的merge层也同样会有
所以多出了build/framemerge/frame两个文件

3删除

删除marble文件,这个对应的是material2中的文件,镜像层的文件是不可写只能读的,所以并不会删除底层的marble文件,而是在build中创建一个主次设备号都为0的字符设备,我认为就是
http://blog.csdn.net/guizaijianchic/article/details/78117352 中写到的

¬ 删除 lower 有而 upper 没有的文件时,会为被删除的文件在 upper 目录下创建一个 ‘without’ 文件,而 lower 的不会被删除。
这时,merge中的marble文件会被隐藏

我理解的就是upperlayer,也就是容器层,其实就是在新增或者删除时做一些改动的标记,当然还有更改操作时,当只有lower层有对应的文件的时候,需要将底层的文件拷贝上来,同时创建硬链接,然后直接在upperlayer进行修改,lower层的文件是不会变化的。