一、镜像加载的原理
(一)docker底层结构
1.Linux文件系统由bootfs和rootfs两部分组成
bootfs:包含bootloader(引导加载程序)和 kernel(内核)
rootfs: root文件系统,包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc等标准目录和文件
不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu,centos等
Docker镜像底层实际上是有多个不同的联合文件系统组成的
最底层:bootfs,并使用宿主机的bootfs-复用
第二层:root文件系统rootfs,称为base image
Union fs
然后再往上可以叠加其他的镜像文件
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,隐藏多层的存在,我们看来只是存在一个文件系统。
所以当我们安装的tomcat镜像大小是600多MB 是因为里面还包含了jdk和centos的镜像
而centos镜像复用了宿主机的bootfs 下载的只有rootfs 所以小很多
所以tomcat>jdk(父镜像)->centos> 所以整个向外暴露就是600MB
镜像只读 当从一个镜像启动容器时, 所以docker会在镜像上面加载一个可读可写的文件系统作为容器运行。
https://hub.docker.com/_/tomcat
(二)Docker Commit
主要作用:根据当前容器制作为镜像文件
流程:
- 从docker hub中下载一个tomcat8镜像文件;
- 运行tomcat8镜像文件 在tomcatwebapps 目录中新增 boyatop文件夹 index.html
- 将当前容器内容根据模板制作为镜像文件
1.安装一个tomcat8
docker run -p 8081:8080 tomcat:8
2.docker exec -it 3a06b4c779a8 bash
3.cd webapps
4.mkdir boyatop
5.touch index.html
6.echo "boyatop" >>index.html
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[