从零学Java笔录

【Docker教程系列】Docker学习5-Docker镜像理解

2022-12-07  本文已影响0人  凯哥Java

通过前面几篇文章的学习,我们已经安装好了Docker,也学会使用一些常用的命令。比如启动命令、镜像命令、容器命令。常用命令分类后的第二个就是镜像命令。那么镜像是什么?拉取镜像的时候为什么是一层一层的?镜像加载的原理是什么?本篇,我们就来学学,Dokcer镜像的分层概念。

《Docker学习系列》教程已经发布的内容如下:

【图文教程】Windows11下安装Docker Desktop

【填坑】在windows系统下安装Docker Desktop后迁移镜像位置

【Docker学习系列】Docker学习1-docker安装

【Docker学习系列】Docker学习2-docker设置镜像加速器

【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令

【Docker学习系列】Docker学习系列3:常用命令之容器命令

【Docker学习系列】Docker学习4-常用命令之重要的容器命令

【Docker学习系列汇总地址】笔记及遇到问题解决文章

镜像是什么?

镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需要的所有内容,我们把应用程序和配置依赖打包好形成一个可以交付的运行环境(包括黛米、运行时候需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件

分层的镜像

我们来从远程仓库pull个Tomcat。来看看整个pull的流程:

命令:docker pull tomcat

72432264d78f1798bdb9856b26b17872.png

我们会发现,下载是一层一层的。所以镜像是分层的

联合文件系统(UnionFS):

联合文件系统(UnionFS):是一种分层、轻量级并且高性能的文件系统。它支持对文件系统的修改

作为一次提交来一层一层的叠加。同时可以将不同目录挂载到同一个虚拟文件系统下。

Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承。基于基础镜像(没有父镜像[ps:可以理解为Java中的Object类型]),可以制作各种具体的镜像。

特性:

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

如同花卷

Docker镜像加载原理是什么?

f90eb4df586fe88783c5da8c0326f038.png 9dc72ce9e128f9dedf42eaa547f90ac2.png

为什么docker镜像要采用这种分层结构呢?

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。

bd4de2186c9ed634097f03b4efb743dc.png

重点理解

Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作容器层,容器层之下的都是镜像层。

99bb0798e6854ff0dd569664fc8da818.png
上一篇下一篇

猜你喜欢

热点阅读