这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战web
微信公众号搜索 程序媛小庄 人生苦短 一块儿学Pythondocker
前面的文章中介绍了docker镜像和容器的基本操做,可能会有小伙伴有疑问,docker时一个轻量级的,那为啥有些镜像特别的大呢?就须要了解docker镜像的分层原理。在使用docker pull
的命令时,会首先在本地仓库中寻找,找不到才去远程仓库中下载,可是能够发先在下载过程当中并非只下载一个镜像 。微信
首先看一下镜像的比较官方的定义,镜像是一种轻量级的可独立的软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含某个软件所需的全部内容,包括代码、运行时所须要的库、环境变量和配置文件。markdown
容器是属于操做系统级别的隔离,容器是镜像运行获得的,若是按照这种思路构建镜像的话,每一个镜像都须要本身封装一个基础的操做系统依赖,以下图所示,就会致使每一个镜像都很是的大,很是占用系统资源。架构
所以docker将镜像尽量的将镜像的公共部分单独抽取出来进行分层,而且尽量的划分的更加细致,最底层的就是最公共的那一部分镜像。上图就能够简单转换为下面这样:固然在操做系统层面上可能还会进一步分层。post
因此总结来讲一个镜像很是大的缘由就是一个镜像不单单是原来的软件包,还包含软件包所须要的操做系统依赖、团建自身以来以及自身软件包组成。学习
docker在设计镜像时每个镜像都是由N个镜像进行组成的,这样会最大程度的复用基础的重复的镜像,从而减小仓库的总体体积。这也是镜像分层原理,这种原理也叫UnionFs联合文件系统。spa
在了解了镜像和容器的相关操做以后,能够总结出docker的核心架构图,该核心架构能够帮助咱们更加清楚的对docker进行学习。(dockerfile在后面的文章中会介绍,欢迎你们关注哦)操作系统
文章首发于微信公众号程序媛小庄,同步于掘金。设计
码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)