Docker镜像的原理

1.再次回顾什么是镜像?

        镜像是一种可执行的独立软件包,它内部包含运行某个软件所需的所有内容,包括代码、运行所需的库函数、运行环境、配置文件等。

        所以一个镜像相比于官网下载的软件要大很多,我们用tomcat服务器来举例,在官网上我们只需要10MB,但是镜像我们发现需要几百MB(里面包含精简版的Linux操作系统+jdk+tomcat)。

Docker镜像的原理_第1张图片

2.UnionFS

        UnionFS是联合文件系统,也称为叠加文件系统,是一种分层、轻量级并且高性能的文件系统。就是一次同时加载多个文件系统,把各层文件系统叠加起来,最终我们会看到一个完整的系统。

        docker采用的就是Union文件系统

        比如我们采用docker要拉取多个版本的tomcat镜像,其内部大致如下:

Docker镜像的原理_第2张图片

3.Docker镜像原理

        docker的镜像实际是由一层一层的文件系统组成——>UnionFS联合文件系统。

  • bootfs:在docker镜像的最顶层就是bootfs,bootfs主要包含bootloader(boot加载器)和kernel(内核),Linux刚启动时会加载bootfs文件系统,boot加载器主要作用是引导加载内核,当加载完后整个内核就已经在内存中了,此时控制权交给内核,并卸载bootfs。

  • rootfs:在boots之上,包含的就是典型的linux系统中的/dev,/bin,/etc等目录和文件。而rootfs就是Linux操作系统的发行版,如Centos,Ubuntu等。由此可见不同的linux发行版,它们的bootfs是一致的,rootfs会有差别,因此不同的发行版可以共用bootfs。

4.为什么docker镜像要采用这种分层结构呢?

        可以实现资源共享,比如有多个镜像都是从相同的base(基础)镜像构建而来的,那么宿主机只需要在磁盘中保存一份base镜像。同时内存中也只需要加载一份base镜像,就可以为所有的容器服务了。

 

 

你可能感兴趣的:(docker,docker,容器,运维)