一、前言
前面的分享和大家介绍了基础的容器创建,其实容器的创建和虚拟机的创建过程是很相似的,都是基于镜像来的,但是两者之间有什么区别呢?容器的镜像结构是怎么样的呢? 本次分享就和大家来介绍容器镜像的分层结构。 二、容器镜像结构 1、Linux操作系统结构 Linux操作系统由内核空间和用户空间构成, rootfs:Linux系统中的用户空间文件系统。rootfs是一个操作系统所包含的文件、配置和目录,但并不包括操作系统kernel。
2、容器镜像 容器镜像打包了整个操作系统的文件和目录(rootfs),当然也包括应用本身。可以说,应用及其运行所需的所有依赖,都在被封装在容器镜像中。保证了本地环境和云端环境的高度一致。 容器镜像采用分层结构:所有容器共享主机内核,并且不能修改宿主机内核。容器镜像只是提供了一套镜像文件系统中的各种文件,而各种内核相关的模块或者特性支持,完全依赖于宿主机。
3、base镜像 base镜像是从scratch构建(scratch是docker官方提供的一个空镜像),不依赖于其他镜像。其他镜像可以在base镜像上进行扩展,创建新的镜像。 最常见的base镜像是各Linux发行版的docker镜像,如Ubuntu、centos。
4、容器镜像的分层结构 容器镜像采用分层结构,可分为镜像层和容器层: 5、容器镜像的cow特性 cow:copy-on-write 对容器的增删改查操作是这样的(类似快照后的读写操作): 删除文件:依据容器的分层结构由上往下一次查找。找到后,在容器层中记录该删除操作。 修改文件:依据容器分层结构依次由上往下查找。找到后,将镜像层中的数据复制到容器层进行修改,修改后的数据保存在容器层中。
|