当前位置:   article > 正文

Docker入门:镜像分层概念简述_docker 分层

docker 分层

镜像的理解:
(1)镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需要的所有内容。我们将应用程序、配置打包成一个成型的、可交付、可部署的运行环境,包括代码、运行时所需要的库、环境变量和配置文件等,这个大包好的运行环境就是image镜像文件。
(2)只有通过镜像文件才能生成Docker容器实例。

一、Docker镜像分层机制

Docker镜像是分层构建的,随着我们深入学习Docker,我们会理解到Dockerfile中每条指定都会新建一个层。以下面Dockerfile指令为例:

FROM ubuntu:20.04			#基础镜像
COPY . /app						#复制文件
RUN make /app					#编译文件
CMD python /app/app.py	#入口文件
  • 1
  • 2
  • 3
  • 4

以上四条指令,在每一层上只记录本层所做的更改,而且这些层是只读层。当启动一个容器,Docker指挥在最顶部添加读写层,在容器内作的所有更改(写日志、修改、删除文件等,都保存到读写层内),一般称该层为容器层,如下图所示:

在这里插入图片描述
事实上,容器(container)和镜像(image)的最主要区别就是容器加上了顶层的读写层。所有对容器的修改都发生在此层,镜像并不会被修改,也即前面说的 COW(copy-on-write)技术。容器需要读取某个文件时,直接从底部只读层去读即可,而如果需要修改某文件,则将该文件拷贝到顶部读写层进行修改,只读层保持不变。

每个容器都有自己的读写层,因此多个容器可以使用同一个镜像,另外容器被删除时,其对应的读写层也会被删除,如果你希望多个容器共享或者持久化数据,可以使用 Docker volume。

二、UnionFS(联合文件系统)

(1)Union文件系统(UnionFS)是一种分层的、轻量级的、高性能的文件系统,它是Docker镜像的基础,并且支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂在到同一个虚拟文件系统下。
(2)镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。

Union文件系统的特性:一次性同时加载多个文件系统,但是从外面来看,只能看到一个文件系统;联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有地层的文件和目录。

三、Docker镜像加载原理

Docker的镜像是由一层一层的文件系统组成,也就是以UnionFS(联合文件系统)堆叠构成

rootfs(root file system)包含的是典型Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件,其实rootfs就是各种不同的操作系统发行版,比如Ubuntu、Centos等等。

bootfs(boot file system)主要包含bootloader和kernel、bootloader主要是引导加载kernel、Linux刚启动时候加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。这一层与典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成后整个内核就在内存中了,内存的使用权由bootfs转交给内核,此时系统也会写在bootfs。至此,我们就比较容易理解docker容器其实就是一个简易版的Linux环境,它包含root用户权限、进程空间、用户空间和网络空间、以及运行在它上面的应用程序。

在这里插入图片描述

注意:
(1)如上图所示,Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像顶部,这一层通常被称作“容器层”,“容器层”之下的都叫做“镜像层”。
(2)对容器的所有更改(无论添加、删除、还是修改文件)都只会发生在容器层中。上图中只有透明的writable Container是暴露给用户的。

思考一个问题:平时我们在虚拟机上安装Linux操作系统都是好几个G,为什么docker才200M左右呢?

因为,docker是基于轻量级的虚拟化技术,它仅包含业务运行时所需的runtime环境,也就是只包含Linux基础镜像,所以docker才会只有200M左右。

四、Docker采用镜像分层的好处

镜像分层最大的好处:资源共享,方便复制迁移,容易实现资源复用。比如说多个镜像从相同的base镜像构建而来,那么Docker Host只需在磁盘上保存一份base镜像;同时内存中只需要加载一份base镜像,就可以为所有容器提供服务了,更有趣的是镜像的每一层都可以被共享。

在这里插入图片描述

因此,Docker采用镜像分层的好处主要体现在以下三个方面:

更轻量:

  • 镜像大小:所需空间更小
  • 部署:更有利于大规模部署

更高效:

  • 计算:轻量、无需额外开销
  • 存储:系统盘aufs/dm/overlayfs;数据盘olume
  • 网络:宿主机网络,NS隔离

更敏捷、更灵活:

  • 分层的存储和包管理,devops理念;
  • 支持多网络配置
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/80730
推荐阅读
相关标签
  

闽ICP备14008679号