了解tomcat docker文件

时间:2017-09-20 10:41:35

标签: java ubuntu 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中使用那么多行来实现它。

4 个答案:

答案 0 :(得分:1)

Docker使用FROM指令指示基本映像。如果你沿着它走过去看看

FROM debian:stretch

on https://github.com/docker-library/buildpack-deps/blob/master/stretch/curl/Dockerfile

答案 1 :(得分:0)

图像包含需要在docker镜像上编译的tomcat APR库。 tomcat不需要库来运行,但建议将其用于生产中,因为它是快速且可扩展的连接器。

答案 2 :(得分:0)

Dockerfile可以使用任何有效的Docker镜像指定FROM。您经常会获得一个图像层次结构,一个安装了基本操作系统的图像,然后是自定义操作系统以运行某些应用程序类型的子图Java应用程序,节点应用程序等。

要弄清楚图片中的内容,您需要从FROM语句的层次结构中进行跟进,以获得完整的图片。

从您链接的Dockerfile,您可以看到FROM openjdk:8-jre。这告诉我们,此Dockerfile根据:latest图片的openjdk:8-jre标记构建图片。这意味着我们可以找到该图片的Dockerfile,并看到openjdk:8-jre实际建立在buildpack-deps:stretch-curl图片上,而debian:stretch图片又建立在{{3}}图片上。

或者,您可以对图片使用docker history,例如docker history openjdk:8-jre查看图片所包含的图层列表。

答案 3 :(得分:0)

您在某些Dockerfiles中看到如此多行的原因是图像构建在最小的基本图像上。这在docker中被认为是保持图像小的一种非常好的做法。

Ubuntu图像等在某种程度上很大,通常不需要它来实现打包应用程序的最终结果。

在tomcat图像中,Dockerfile位于openjdk:8-jre图像的顶部,该图像本身构建在基本debian:stretch之上。因此,可能不像在Ubuntu中那样直接在Dockerfile中安装tomcat。