容器镜像

容器镜像的组成

容器的镜像的组成一般分为三个部分:

只读层

这一部分一般是操作系统的基础文件,比如下面这些文件目录
bin boot data dev etc home lib lib64 media mnt opt patch proc root run sbin srv sys tmp usr var

Init层

有时用户启动容器时需要修改容器镜像操作系统的一些属性,比如 hostname等。
这些改动我们并不想将它提交到,所以这些文件单独的在这一层挂载,docker commit 时并不会提交这些内容

可读写层

我们需要提交的修改内容在这一层以增量的方式存储,包括文件的增删改等操作。
如果要进行删除操作,docker则会可读写层创建一个.wh.xxx的文件,通过联合挂载的方式,就会把这个文件遮挡起来,看起来就像是删除了一样。
你可以尝试一下,下载一个centos的镜像,然后往容器里面添加一个文件,再删除这个文件,你会发现镜像的大小并没有减小,只会增加。下满是我的测试结果。

所以往镜像中添加文件要谨慎,不要加了又删,这并不会减小镜像的大小的。

联合挂载

什么是联合挂载。比如当前A目录下有文件a.txt,B目录下有文件b.txt,现在将目录AB联合挂载到C目录下,C目录下就有了 a.txt和b.txt两个文件。
docker就是利用联合挂载的方式将容器镜像的每一层联合挂载到统一的挂载点。

原文地址:https://www.cnblogs.com/virgosnail/p/14113758.html