3. Docker 镜像详解
Docker 镜像详解
🌕镜像是什么
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容包括代码、运行时、库、环境变量和配置文件。所有的应用,直接打包 docker 镜像,就可以直接跑起来!如何得到镜像:
从远程仓库下载
朋友拷贝给你
自己制作一个镜像 DockerFile
🌕Docker 镜像加载原理
UnionFS:(联合文件系统)
我们在拉取 hello world 的时候,看到的一层层的就是这个!
用来记录每一次修改,查看是否是新增或者叠加
UnionFS(联合文件系统):Union 文件系统(UnionFS)是一种
分层
,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(uniteseveral directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
类似于 Git 版本控制系统
例如都要下载 Tomcat 和 MySQL,其中 Tomcat 已经下载了 centos,那么在下载 MySQL 时就不用单独下载,而是他们共用一个 centos
Docker 镜像加载原理
docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统 UnionFS.
bootfs(boot file system)
主要包含 bootioader 和 kenel,bootloader 主要是引导加载 kemel,Linux 刚启动时会加载 bootfs 文件系统,在 Docker 镜像的最底层是 bootfs。这一层与我们典型的 Linux/Unix 系统是一样的,包含 boot 加载器和内核。当 boot 加载完成之后整个内核就都在内存中了,此时内存的使用权已由 bootfs 转交给内核,此时系统也会卸载 bootfsrootfs (root file system)
,在 bootfs 之上。包含的就是典型 Linux 系统中的/dev/proc,/bin/etc 等标准目录和文件。rootfs 就是各种不同的操作系统发行版,比如 Ubuntu,Centos 等等。
bootfs
:系统启动引导需要加载。黑屏———>开机(加载)这一部分就是公用的,相当于文件联合系统的概念
平时我们安装进虚拟机的 Centos 都是好几个 G,而 Docker 才 200M
对于一个精简的 OS,rootfs 可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用 Host 的 kernel,自己只需要提供 rootfs 就可以,由于可见对于不同的 Linux 发行版,bootfs 基本一致的,rootfs 会有差别,因此不同发型版可以公用 boootfs。
🌕分层理解
下载一个镜像,查看下载的日志输出,可以看到是一层一层的在下载
分层信息:
🌗分层的优点
资源共享
是最大的优点!比如有多个镜像都从相同的 Base 镜像构建而来,那么宿主只需要在磁盘上保留一份 base 镜像,同时内存中只需要加载一份 base 镜像,这样就可以为所有容器服务了,而且镜像的每一层都可以被共享。
查看镜像分层可以通过:docker image inspect
命令!!
🌗理解分层
所有的 Docker 镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上创建新的镜像层。
举一个简单的例子,假如基于 UbuntuLinux16.04 创建一个新的镜像,这就是新镜像的第一层:如果在该镜像中添加 Python 包,就会在基础镜像层之上创建第二个镜像层;如果继续添加一个安全补丁,就会创建第三个镜像层。
该镜像当前已经包含 3 个镜像层,如下图所示(这只是一个用于演示的很简单的例子)。
在添加额外的镜像层同时,镜像始终保持是当前所有镜像的组合,每个每个镜像层包含 3 个文件,而镜像包含了来自来个镜像层的 6 个文件
下图,在外部看来整个镜像只有 6 个文件,这是因为最上层的文件 7 是文件 5 的一个更新版本。
这种情况下,上层镜像层中的文件覆盖了底层镜像层中的文件。这样就使得文件的更新版本作为一个新镜像层添加到镜像当中。
Docker 通过存储引擎(新版本采用快照机制)的方式来实现镜像层堆栈,并保证多镜像层对外展示为统一的文件系统。
Linux 上可用的存储引擎有 AUFS、Overlay2DeviceMapperBtrfs 以及 ZFS。顾名思义,每种存储引擎都基于 Linux 中对应的文件系统或者块设备技术,并且每种存储引整都有其种有的性能特点。
Docker 在 Windows 上仅支持 windowsfilter 一种存储引擎,该引擎基于 NTFS 文件系统之上实现了分层和 CoW[1]。
下图屏示了与系统易示相同的三层镜像,所有镜像层堆叠并合并,对外提供统一的视图。
🌗特点
假设有些层是相同的,我们就可以直接复用
Docker 镜像是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!
这一层就是我们通常说的容器层,容器层之下的都叫镜像层!
🌗commit 镜像
🌗实战测试
默认的官方 Tomcat 镜像的 webapps 文件夹中没有任何内容,需要从 webapps.dist 中拷贝文件到 webapps 文件夹。
下面自行制作镜像:就是从 webapps.dist 中拷贝文件到 webapps 文件夹下,并提交该镜像作为一个新的镜像。使得该镜像默认的 webapps 文件夹下就有文件。具体命令如下:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
关系型数据库 MySQL Linux 应用服务中间件 开发工具 git Docker Python 容器
评论
小呆鸟
评论
相关文章
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
21 0
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
28 0
游客xaubllxwtvaquDocker之 - 使用镜像和仓库(一)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
156 0
游客xaubllxwtvaquDocker之 - 使用镜像和仓库(二)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
72 0
游客xaubllxwtvaquDocker之 - 使用镜像和仓库(三)
上一篇文章中,我们学习了包括 docker run 在内的许多对容器进行操作的基本指令,那么在本节中,我们主要探讨 Docker 镜像的一些概念,比如什么是镜像,如何对镜像进行管理,如何修改镜像,如何创建、存储、共享自己创建的镜像等,那么就开始我们的学习
58 0
Docker 之- 使用 Docker 镜像和仓库目录 使用 Docker 镜像和仓库什么是 Docker 镜像列出 Docker 镜像 tag 标签 Docker Hub 拉取镜像查找镜像构建镜像创建 Docker Hub 账号使用 Docker 的 commit 命令创建镜像使用 Dockerfile 构建镜...
5587 0
使用 Docker 镜像和仓库
1592 0
游客3fxpohbdpoqm2什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
什么,容器太多操作不过来?我选择 Docker Compose 梭哈(下)
198 0
795 0
技术小阿哥Docker容器学习梳理-容器时间跟宿主机时间同步
1636 0
你只管努力,剩下的交给时间
60
文章
0
问答
文章排行榜
最热
最新
1阿里云 Lindorm联合EMQ ,构建新一代 IoT 全链数据解决方案2522842当我们谈论不可变基础设施时,我们在谈论什么2453643云上自动化运维CloudOps系列沙龙 第二弹——自动化,才高效2456304业务中台之上的低代码应用开发平台2426895【AI征文】对DeepRec认识以及了解955866十分钟生成影视级室内设计效果,红星美凯龙设计云如何升级传统家居行业1052517【AI征文】初识DeepRec591648云上解锁Web3.0 阿里云XR平台助力彼真科技呈现沉浸式演唱会682299“穿越”到虚拟世界笑风生,网易瑶台沉浸式活动平台创新云端活动体验7969610镜像站体验官新一期任务发布,完善镜像站配置信息拿天猫精灵音箱3598311揭秘!真假美猴王与如来的那起运维事故3442812阿里云联合平行云推出云XR平台,支持沉浸式体验应用快速落地 | 电子书免费下载3511413初识Serverless函数计算2839514Lindorm CDC技术解析2464115为什么我要迁移 SpringBoot 到函数计算2205516你真的会在函数计算FC上部署springboot云上博客吗2459517云端舞蹈——阿里云Serverless函数计算测评3049418SaaS厂商数据库设计(2)-租户路由3106119“智物智造”杯2022物联网创新应用大赛,你的idea 改变世界!5332720有奖互动|7.19数据库升舱计划实战峰会:行业领袖齐聚,他们因何而来?11725
推荐文章
参与评测免费使用模型库赢取AirPods等好礼寻找百位乘风者伯乐,邀约新博主入驻可获乘风者定制周边及重力星球蓝牙音箱!参与云效评测赢取机械键盘大礼乘风者计划邀您入驻社区,精彩权益即刻享
相关电子书
90.ppt[a0zy].1486651922.ppt
目录
评论