了解tomcat docker文件
我正在看下面的tomcat docker文件:
https://github.com/docker-library/tomcat/blob/5c8b74e495a1b63116b524407941b15eef58a7fe/8.0/jre8/Dockerfile
但是,它应该不指定一个操作系统作为基础的形象(例如Ubuntu,Debian等)?
我基本上只需要一个包含Ubuntu 16.x,Java 8和Tomcat 8的docker文件。但是不知道为什么我需要在上面的dockerfile中有很多行来完成。
Docker使用FROM指令来指示基础图像。 如果你沿着它走,你会看到
FROM debian:stretch
在https://github.com/docker-library/buildpack-deps/blob/master/stretch/curl/Dockerfile
图像包含需要在泊坞窗图像上编译的tomcat APR库。 库不需要tomcat运行,但build议在生产中使用它,因为它是快速和可扩展的连接器。
Dockerfile
可以使用任何有效的Docker镜像来指定FROM
。 您经常会得到一个图像层次结构,一个是安装了基本操作系统,另一个是定制用于运行某些应用程序types(如Java应用程序,节点应用程序等)的操作系统的子级。
要计算出图像中的内容,需要跟踪FROM
语句的层次结构以获取完整的图像。
从你链接的Dockerfile
,你可以看到FROM openjdk:8-jre
。 这告诉我们这个Dockerfile
根据openjdk:8-jre
图像的:latest
标签构build一个图像。 因此,这意味着我们可以find该图像的Dockerfile ,并看到openjdk:8-jre
实际上build立在buildpack-deps上:stretch-curl图像,它依次构build在debian:stretch图像上。
或者,您可以使用docker history
对照图像,例如docker history openjdk:8-jre
查看图像所组成的图层列表。
在Dockerfiles中看到这么多行的原因是图像build立在最小的基本图像上。 这在Docker中被认为是一个很好的做法,以保持图像的小。
Ubuntu的图像等等大小,通常不需要打包应用程序的最终结果。
在tomcat映像中,Dockerfilebuild立在openjdk:8-jre
图像的基础之上,它本身是build立在基本的debian:stretch
之上的。 因此,可能不像在Ubuntu中那样直接将Tomcat安装在Dockerfile中。