Java Docker使用哪个OpenJDK发行版?

Java Docker使用哪个OpenJDK发行版?,java,docker,Java,Docker,据我所知,“OpenJDK”只是mercurial存储库() 它需要有人(Oracle、RedHat、OpenJDK、Amazon的Corretto等)来构建并打包成“OpenJDK发行版” 所以,我的问题是:当我这样做的时候: docker pull openjdk 我得到了谁的分配 这似乎很重要,因为我上面列出的每个发行版在如何处理安全补丁等方面都有不同的策略 还是我遗漏了什么?查看dockerfile,就会发现它是Debian:除非在运行时更改默认配置 docker pull openj

据我所知,“OpenJDK”只是mercurial存储库()

它需要有人(Oracle、RedHat、OpenJDK、Amazon的Corretto等)来构建并打包成“OpenJDK发行版”

所以,我的问题是:当我这样做的时候:

docker pull openjdk
我得到了谁的分配

这似乎很重要,因为我上面列出的每个发行版在如何处理安全补丁等方面都有不同的策略


还是我遗漏了什么?

查看dockerfile,就会发现它是Debian:

除非在运行时更改默认配置

docker pull openjdk
您正在从中提取图像

这将产生以下图像:

此图像的来源可以在“我得到的是谁的分布?”

如果你是从Dockerhub中提取图像,有两种方法可以解释你的问题

  • 映像基于哪个操作系统版本
  • 谁创造了这个形象
  • 第二个问题的答案要求您对Docker文件的提交历史进行一些挖掘。如果您关心这些事情,那么最好下载Docker文件并在本地构建映像


    至于第一个问题,答案取决于您使用的图像标记,因此,例如,标记为标记“12:alpine”的图像基于alpine:3.8(更多信息请参见此处)

    您可以使用11 oracle标记来获取oracle OpenJDK 11版本

    docker pull openjdk:11-oracle 
    
    拉最新的一个

    您还可以使用12ea标记来获取Oracle OpenJDK 12早期访问版本,即

    docker pull openjdk:12-ea
    

    当您未指定标记时。它选择存储库中的默认标记集,如下所示:

    Using default tag: latest
    

    因此,这完全取决于哪个图像被标记为与最新图像相同的图像(使用docker tag命令或等效命令-就像符号链接一样)。如果不确定,请为您熟悉的发行版创建自己的docker图像。您可能应该在拉标签时在标记中指定发行版,而不是让它模棱两可。这将消除这里的不确定性。