docker的联合文件系统和镜像原理

大家好,今天分享docker的联合文件系统和镜像原理

第一个问题就是:

镜像是什么东西:

镜像就是一个轻量级,可以执行的软件包,它是用来打包软件的运行环境和基于这

个环境开发的软件,它包含了软件运行所需要的所有东西

我们如何获得镜像

  1. 可以从远程仓库里下载
  2. 可以找别人拷贝
  3. 可以自己制作一个dockerfile 文件

docker 镜像加载的原理:

联合文件系统(英文: UnionFs):是一种分层,轻量级,而且性能很高的文件系统,它是可以对文件系统的修改作为一种结果的提交进行一层一层的叠加,同时将不同的目录挂载到同一个虚拟文件系统, 联合文件系统是docker镜像的基础,docker 镜像可以通过分层来进行继承,而原始镜像,也可以称为父镜像,可以基于(依托于父镜像),来制作各种拥有各种具体功能的镜像

特点:

一次加载多个文件系统,从外面看,就只能看见一个文件系统,把所有所有的文件系统叠加到一起,这样的

文件系统会将所有的文件和命令包含起来

docker的联合文件系统和镜像原理_第1张图片
看这个图

mysql 和Tomcat 这俩个,它们的底层都是要使用到centos 镜像,假设一个情况,mysql 已经有centos 镜像,那Tomcat就不需要再下载了,这一层可以共用

docker 镜像的加载原理

docker 镜像是由一层一层的文件系统构成,这样层级的文件系统叫做 联合文件系统
docker的联合文件系统和镜像原理_第2张图片

这样更清晰:

docker的联合文件系统和镜像原理_第3张图片

看这个过程在不断的进行演化

docker的联合文件系统和镜像原理_第4张图片
可以把它分三步:

  1. 内核
  2. 内核+镜像(images)
  3. 内核+镜像(images)+镜像(images)

我们可以发现,在这个过程当中,它的内核是共用的

在这个图当中 ,还可以看见俩个概念:

1.bootfs : boot file system 我们的docker是安装我们Linux宿主机上,.bootfs的过程就是我们linux宿主机去加载内核并且启动系统的过程

2.rootfs (root file system ): 就是我们内核加载完成之后,进入到的目录文件,就是各种操作系统的发行版,即我们已经进入系统

这里,我们也可以将docker理解为类似于VMware 一样的虚拟机

拿centos7 的原生镜像举例:
docker的联合文件系统和镜像原理_第5张图片
它的大小是4.16G

这是我们centos 的docker 镜像

注意看大小
只有231 M

在这里插入图片描述

进入这个容器之后,很多命令都是没有的

因为这是压缩版的,它只有维持它正常运行的必要的东西

在运行这个镜像进而成为一个容器的同时,会发现它特别的快。因为它和本地Linux宿主机共用一个系统内核

省去了系统内核加载的时间和资源消耗
这就是docker 为什么这样快的原因

VMware 是以分钟计时的开机时间
docker 是以秒计时的开机时间

好了,docker的联合文件系统和镜像原理就到这里了,谢谢大家

你可能感兴趣的:(docker,实战操作+理论讲解,docker,容器,linux,联合文件系统)