OpenJDK Docker镜像的分发者是谁?

3

我的理解是,如果要使用OpenJDK,需要像Oracle OpenJDK、AdoptOpenJDK这样的发行商,但在Docker存储库中的OpenJDK上,如果我只使用它们的参考文档,如何找到发行商。

{下面的代码来自于OpenJDK官方Docker存储库}

FROM openjdk:11
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac Main.java
CMD ["java", "Main"] 

从Java 8升级到Java 11

1个回答

2
所有内容都在docker页面上写得很清楚:https://hub.docker.com/_/openjdk/ openjdk:<version>是事实上的镜像。[...]这些是Debian发布版本的套件代码名称,并指示基于哪个版本的映像。[...]
openjdk:<version>(从12开始),[...]从openjdk:12开始,默认映像以及-oracle和-oraclelinux7变体都基于官方Oracle Linux 7映像,根据Oracle Linux最终用户许可协议(EULA)提供,属于GPLv2。[...]
简而言之:这些映像由Docker社区维护,版本< 12使用来自Debian或Alpine Linux的OpenJDK构建,后续版本使用Oracle构建。
顺便说一下,直到包括版本8,Oracle JDK更加自由地可用。无论如何,Linux发行版都会构建自己的二进制文件。AdoptOpenJDK、Amazon Corretto等二进制发行版只是因为Oracle不再免费提供二进制文件。但是,如果您愿意,可以下载OpenJDK并自行构建。
编辑:您还可以ssh进入映像并运行java -version 编辑2:Java 7和支持 我想回答您对我的答案的评论。您特别要求Java版本7。这个版本非常旧(2011年首次发布!),如果没有支付商业支持,您将找不到任何长期支持。期间。
此版本还先于Oracle二进制文件的许可证更改,因此整个AdoptOpenJDK论点并不重要。
在OpenJDK Docker Hub页面上,您可以看到不同的映像,其中包含使用Alpine Linux和Debian Jessie构建的Java 7构建。这些是-distribution通过该分发的开源OpenJDK项目的构建。因此,应适用带有classpath异常的GPL许可证(即:您可以在商业上使用它)。
请注意,即使是Debian Jessie的LTS支持也将在下个月结束:https://wiki.debian.org/LTS 这可能不一定是问题,具体取决于您想在哪里运行该映像(即面向公共互联网还是私人内部网络)。
如果您必须坚持使用这么旧的Java版本,则选择很少(也许采用现代Linux映像并自己构建OpenJDK [我想这将是痛苦的])。
编辑3:最近版本7的支持以及从AdoptOpenJdk开始的v8+

好的,根据您在评论中的澄清,您实际上并不是在寻找第七版构建。

然而,我找到了 Azul 提供的最新和支持的 Java 7 构建:https://hub.docker.com/r/azul/zulu-openjdk

但是您说您正在运行第8版,想升级到第11版。那么,我强烈推荐使用目前最流行的 AdoptOpenJDK。他们提供Docker 镜像(注意:他们提供不同的 JVM:Hotspot 是默认值并且强烈推荐,OpenJ9 基于 IBM 的开发)。


我对这个话题的理解有限,但是Debian或Alpine是否可以在生产中免费使用,并且它们是否像AdoptOpenJDK一样具有LTS? - Bee
@Bee 我已经回复了你的评论。简而言之:许可证可以用于生产,支持方面就算了吧,10年前的Java版本是没有免费支持的。顺便说一下,你需要区分操作系统和Java二进制文件的“支持”或更新。据我所知,没有公开的Java 7修复程序回溯,无论是哪个操作系统。Debian Jessie的操作系统更新将在下个月结束。 - Benjamin Maurer
我实际上希望从Java 8迁移到Java 11。上面示例dockerfile中显示的Java 7只是在docker hub上openjdk存储库参考文档中显示的第一个示例。然而,这确实指引了我正确的方向。 - Bee
你应该提到这一点。从7到8(或者是在8之后,我忘了)有许可证变更,这对于商业用途有着巨大的影响,因为Oracle构建不再长期提供和商业使用。开放项目和供应商,如AdoptOpenJDK、Azul和Corretto填补了这个空缺,现在是获取自由授权、免费构建的推荐和首选方式。 - Benjamin Maurer
抱歉,我应该在一开始就指明这个。 - Bee
1
好的,就未来而言,我建议您在提问时提供更多的信息,并询问您实际想要实现什么(如“如何获取用于商业用途的java 8+ docker设置”),而不是针对潜在解决方案的特定问题(如“谁提供openjdk docker镜像以及许可证是什么”)。 - Benjamin Maurer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接