镜像是什么
docker是一个虚拟机,类似于VMware
镜像就是安装包,比如tomcat、redis、nginx、mysql等安装包
基于docker安装tomcat服务器 是否需要配置jdk环境变量呢?
docker安装tomcat:8 --jdk8 配置环境变量
docker安装tomcat:9 --jdk9 配置环境变量
在tomcat容器中执行java、javac可以看到默认安装了jdk
如何封装配置环境依赖的呢?
Dockerfile---文件
Tomcat 100mb
1.依赖于我们JDK 200mb
2.Linux服务器centos 200mb
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
为什么运行tomcat镜像文件,不需要配置jdk环境变量。
1. tomcat镜像文件包含jdk依赖镜像 tomcat8-----jdk8镜像文件
2. 底层dockerfile -----描述配置jdk环境
镜像加载的原理
![](https://i-blog.csdnimg.cn/blog_migrate/a872b51ad35725dff37a17957d71e216.png)
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
![](https://i-blog.csdnimg.cn/blog_migrate/787374a4cc3dd8f98f9a5fe052ad3e68.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2521afeb6f573ad670c22c6abee2aebb.png)