我正在查看下面的tomcat docker文件:
但是它不应该将操作系统指定为基本图像(例如Ubuntu,debian等)吗?
我基本上只需要一个包含ubuntu 16.x,java 8和tomcat 8的docker文件。但不确定为什么我需要在上面的dockerfile中使用那么多行来实现它。
答案 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。