容器原理之镜像实践

1 前期准备

按照以下结构创建目录及文件

使用以下命令,目录分别挂载到merged层的client_1和client_2下面

[root@localhost OverlayFS]# mount -t overlay overlay -o lowerdir=./lowerdir -o upperdir=./client_1/upperdir -o workdir=./client_1/workdir ./merged/client_1
[root@localhost OverlayFS]# mount -t overlay overlay -o lowerdir=./lowerdir -o upperdir=./client_2/upperdir -o workdir=./client_2/workdir ./merged/client_2

挂载后的目录结构如下:

接下来在client_1中做一些操作,来观察是否会影响client_2?同时看看操作是否写入到client_1的upperdir中?

具体操作:

[root@localhost client_1]# echo "data no.1">>file1

[root@localhost client_1]# rm -rf file2

[root@localhost client_1]# echo "data no.4">>file4

然后来看看merged/client_2下是否有变化:

同时再看看lower层是否发生变化:

结论:lower层没有发生变化,同时以lower为基础的其他镜像也没有发生变化,这就是容器镜像的基础镜像不可修改,且不会影响其他容器中的数据的表现。

在看看上面的数据修改最后写到哪里了?

进入client_1/upper目录下,查看:

这时候发现,文件发生了变化,这就是镜像的修改会写入到upper层的表现。

看看merged发生了什么?

merged层就是最后的展示层,和upper层不一样,在这里看不到被删掉的file2,但是在upper层是可以看到的,只是被遮住了,这个是unitfs的whiteout功能。

挂载后,work层会新创出一个work目录来,这个目录没有什么变化,网上查了一下,有个人是这么解释的:

The workdir option is required, and used to prepare files before they are switched to the overlay destination in an atomic action (the workdir needs to be on the same filesystem as the upperdir).

当把挂载的文件卸载后,有什么变化?

这时候发现,所有的修改都还存在。

 

posted @ 2022-03-27 18:25  王羊补劳  阅读(74)  评论(0)    收藏  举报