Docker系列学习(14) -- 容器内镜像分层详解

2,318 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

生命不息,学习不止

题外话

今天又是阳光明媚的一天,已经上了五天班了,明天就应该能放假了吧,然而并不能,今天才周三,还有两天才能放假呢。

image.png

废话不多说,上货!

正文

在这里插入图片描述

上一回解析了docker的镜像的一个分层情况,今天来说说容器中镜像的一个分层情况。

容器内镜像结构

废话少说,先上图

image.png

这是在容器中的一样镜像分层图,可以发现最上层是一个容器层,容器层和下方的镜像层是有所区别的

容器层是读写层,可对该层的文件进行读取和修改

镜像层是只读层,只能读取镜像层中的文件,不可修改,这也就是为什么镜像层的修改会生成新的镜像层的一个原因了

这里说一下,读写权限是对宿主机来说的,也就是说宿主机对容器层具有写的权限

这个图还不是很全面,其实容器层与镜像层中一般有一个层,挂载层,一些挂载用的文件会在挂载层里,这个后面会详细说

容器层有一种特效叫 copy-on-wirte, 这是指在容器层进行文件修改时,容器层会自上向下逐层扫描镜像层寻找文件,找到后会copy一份副本到容器层中,再进行修改,这样不会影响镜像

这里还要提一下对容器层删除文件的操作,上面也说了,容器层的文件是从镜像层copy来的,删除的时候删除copy的文件,但如果没有拷贝的文件,就会生成了一条删除记录,记录在without文件中,并屏蔽对该镜像层中这个文件的读取

容器层被删除时,容器层内的所有文件都会失效,数据也会被删除

下一篇我们继续来讲docker数据卷的原理

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述