文章目录
- 参考视频
- 1.思考
- 1.1.Docker镜像的本质是什么?
- 1.2.为什么CentOS操作系统的iso文件要好几G,但Docker中的CentOS镜像却只有200MB?
- 1.3.为什么Tomcat安装包只有70MB,但Docker中的Tomcat安装包却足足有500MB?
- 2.Docker镜像原理
- 2.1.Linux文件系统的组成
- 2.2.Docker镜像原理
参考视频
18-dockerfile-镜像原理
1.思考
1.1.Docker镜像的本质是什么?
是一个分层的文件系统。
1.2.为什么CentOS操作系统的iso文件要好几G,但Docker中的CentOS镜像却只有200MB?
- CentOS的ISO镜像文件包含bootfs和rootfs;
- Docker的CentOS镜像复用了宿主机的bootfs,其本身只包含rootfs和其他的镜像层。
1.3.为什么Tomcat安装包只有70MB,但Docker中的Tomcat安装包却足足有500MB?
- tomcat安装包只有tomcat本身,相关的依赖还需要自己安装;
- Docker的tomcat镜像中,包含了tomcat运行所依赖的jdk镜像等各种依赖镜像以及基础镜像,这一整个对外暴露的tomcat镜像大小总和达到了500+MB。
2.Docker镜像原理
2.1.Linux文件系统的组成
Linux文件系统由bootfs和rootfs组成:
- bootfs:包含bootloader(引导加载程序)和kernel(内核),所有的Linux发行版几乎都一致,占用空间较大,启动较为费时;
- rootfs:root文件系统,包含/dev、/proc、/bin、/etc等标准目录和文件,不同Linux发行版(ubuntu、centos)各不相同。
2.2.Docker镜像原理
Docker镜像是由特殊的文件系统叠加而成的。
- 镜像的最底层是bootfs(驱动和内核)。但由于镜像运行时会直接使用宿主机的bootfs,因此在拉取时并不会下载bootfs;
- 镜像的第二层是rootfs(root文件系统:centos/ubuntu),被称为base image(基础镜像);
- 再往上,叠加其他的依赖镜像文件;
拉取镜像的本质,是检测所有层的安装情况,下载未安装的镜像层并执行安装
- 拉取镜像时,会逐层检查镜像的安装情况。若某一层的镜像未安装,则会下载并安装,直至所有层都安装完毕。
- 在拉取镜像时,该镜像的文件大小实际上还包括了其所有的依赖镜像(如tomcat依赖于jdk和rootfs)