Docker镜像的原理

发布时间:2024年01月05日

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

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

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

2.UnionFS

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

????????docker采用的就是Union文件系统

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

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镜像,就可以为所有的容器服务了。

?

?

文章来源:https://blog.csdn.net/m0_62565675/article/details/135406031
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。