美文网首页
5、Docker镜像的原理

5、Docker镜像的原理

作者: chanyi | 来源:发表于2021-08-06 14:28 被阅读0次

镜像的实质就是一个轻量级 可独立执行 的软件包
内部包含 软件代码+运行时+库+环境变量+配置文件等等

1、docker镜像加载原理

1、UnionFS联合文件系统

UnionFS是一种分层 轻量级 高性能 的文件系统
对文件系统的每一次修改看作是一个层,然后每层每层的叠加为最新的文件,类似于git对文件版本的管理
可以将不同目录挂载到同一个虚拟文件系统下
docker中使用的就是UnionFS,体现在每次的下载时,一层一层的下载,如果已有则直接跳过,提高效率
docker中镜像可以通过分层来进行继承,基于基础镜像可以制作各种具体的应用镜像

2、分层原理

docker最低层是 bootFSbootFS包含boot加载器和内核
docker最底二层是rootFSrootFS包含linux系统的标准目录和文件,是各种操作系统的发行版,例如Ubuntu Centos
具体安装镜像的时候,也是采用这样的分层的原理。比如要安装redis,需要先安装系统比如是Centos,那么下次再安装es的时候就可以直接跳过安装Centos这一步,直接进行下一层的安装,提升了下载安装的效率
可以通过命令docker inspect 容器id查看Layers,可以显示出容器被分为了多少层
docker镜像都是只读的,当用docker run 命令执行之后,新做的操作会被增加到原来的镜像层上面

所以就分为了两层镜像层容器层镜像层就是原来pull下来的,容器层就是run后的新的所有的操作

2、镜像的提交

通过命令docker commit提交容器成为一个新的副本,类似于git提交文件
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

以下以`tomcat`为例
1、先对原来tomcat进行修改

下载并运行tomcat
`docker pull tomcat`
`docker run -d -p 8080:8080 tomcat`

对tomcat进行修改
`cp -r ../webapps.dist/* ../webapps`

2、commit 修改后的tomcat到本地,然后使用`docker images`查看本地提交的image
`docker commit -a="author" -m="commit webapps" a97a1e7a6a94 tomcat-author:1.0`
`docker images`
>REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
>tomcat-author         1.0       1ef4423d8b56   4 seconds ago   673MB

相关文章

网友评论

      本文标题:5、Docker镜像的原理

      本文链接:https://www.haomeiwen.com/subject/onuvvltx.html