一、docker镜像加载原理
1、联合文件系统(UnionFS)
是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UFS是docker镜像的基础。镜像通过分成来进行继承,基于基础镜像,可以制作各种具体的应用镜像。
bootfs:启动的使用引导镜像。rootfs:在bootfs之上,不同系统的发行版。
rootfs非常小,只包含基本的命令,并且内核使用的都是主机的。
二、docker镜像分层结构
所有的docker镜像都起始于一个基础镜像,当进行修改或者增加新的内容,就会在当前的镜像层之上,创建新的镜像层。
举个例子,加入基于Ubuntu Linux 16.04创建的一个新的镜像,就是新镜像的第一层,如果在镜像中添加Python包,就会在基础镜像层之上创建第二个镜像层,如果继续添加安全补丁,就会创建第三个层。
通常情况下,上层镜像会覆盖底层镜像中的文件,这样就是的文件的更新版本作为最新的镜像层添加到镜像中,Docker使用存储引用的方式来实现镜像层堆栈,保证多层镜像对外展示为同意的文件系统。
Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这层就是我们通常说的容器层,容器层之下是镜像层。
三、提交一个镜像
docker commit -m="提交描述" -a="作者" 容器ID 镜像名称:[TAG]
1、启动tomcat容器
2、把webapp.dist下的文件cp到webapp下
3、使用上面的命令进行提交,这样使用这个新镜像的时候,webapp下就存在我们cp进去的文件了
4、其实就是发布了一个应用在tomcat上,并且制作成本地镜像