镜像原理之联合文件系统
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
如何得到镜像∶
- 从远程仓库下载
- 朋友拷贝给你
- 自己制作一个镜像DockerFile
docker镜像加载原理
UnionFS(联合文件系统)
我们下载的时候看到的一层层就是这个!
UnionF(联合文件系统):Union文件系统(UnionFS )是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtualfilesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性∶一次同时加驳多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
举例
比如 mysql tomcat 都需要 centos
那么只会下载一次 ,另一个下载就会从下载完的那个去拿
docker镜像加载原理
镜像原理之分层理解
特点
Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!
这一层就是我们通常说的容器层,容器之下的都叫镜像层!
如何提交一个自己的镜像?
Commit镜像
Commit镜像
docker commit 提交容器成为一个新的副本
# 命令和git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
实战测试
[root@tianqinglong /]# docker run -it -p 8080:8080 tomcat
[root@tianqinglong /]# docker exec -it tomcat容器id /bin/bash
# 发现这个默认的tomcat是没有webapps应用,镜像的原因,官方的镜像默认 webapps下面是没有文件的!
root@7e119b82cff6:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@7e119b82cff6:/usr/local/tomcat# cd webapps
root@7e119b82cff6:/usr/local/tomcat/webapps # ls
ROOT docs example host-manager manager
# 提交
docker commit -a="kuangshen" -m="add webapps app" 7e119b82cff6 tomcat02:1.0
docker images # 查看镜像 发现tomcat2
# 我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像
如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比我们以前学习时候,快照!
到了这里才算是入门Dokcer !