Docker镜像的分层结构

一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。
至于容器如何获取镜像层文件而又不影响到是镜像层的呢?docker是这样实现的?

如果需要获取某个文件,那么容器曾会从上到下去下一层的镜像层去获取文件,如果该层文件不存在,那么就会去下一镜像层去寻找,直到最后一层。
对于用户而言,用户面向的是一个叠加后的文件系统。

而任何对于文件的操作都会记录在容器层,例如说修改文件,容器层会把在镜像层找到的文件拷贝到容器层然后进行修改,删除文件则会在容器层内记录删除文件的记录。

总结:

对容器的任何改动都是发生在容器层的
容器层是可写可读的,而镜像层是只读的

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐