持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
生命不息,学习不止
题外话
今天又是阳光明媚的一天,已经上了五天班了,明天就应该能放假了吧,然而并不能,今天才周三,还有两天才能放假呢。
废话不多说,上货!
正文
上一回解析了docker的镜像的一个分层情况,今天来说说容器中镜像的一个分层情况。
容器内镜像结构
废话少说,先上图
这是在容器中的一样镜像分层图,可以发现最上层是一个容器层,容器层和下方的镜像层是有所区别的
容器层是读写层,可对该层的文件进行读取和修改
镜像层是只读层,只能读取镜像层中的文件,不可修改,这也就是为什么镜像层的修改会生成新的镜像层的一个原因了
这里说一下,读写权限是对宿主机来说的,也就是说宿主机对容器层具有写的权限
这个图还不是很全面,其实容器层与镜像层中一般有一个层,挂载层,一些挂载用的文件会在挂载层里,这个后面会详细说
容器层有一种特效叫 copy-on-wirte, 这是指在容器层进行文件修改时,容器层会自上向下逐层扫描镜像层寻找文件,找到后会copy一份副本到容器层中,再进行修改,这样不会影响镜像
这里还要提一下对容器层删除文件的操作,上面也说了,容器层的文件是从镜像层copy来的,删除的时候删除copy的文件,但如果没有拷贝的文件,就会生成了一条删除记录,记录在without文件中,并屏蔽对该镜像层中这个文件的读取
容器层被删除时,容器层内的所有文件都会失效,数据也会被删除
下一篇我们继续来讲docker数据卷的原理
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!