Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谁是openjdk docker image的分销商_Java_Docker - Fatal编程技术网

Java 谁是openjdk docker image的分销商

Java 谁是openjdk docker image的分销商,java,docker,Java,Docker,我的理解是,您需要有一个分销商来使用openjdk(oracle openjdk,adoptopenjdk),但在docker repo for openjdk上,如果我只使用他们的参考文档,我如何找出谁是分销商 {下面的代码复制自openjdk官方docker repo} FROM openjdk:11 COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN javac Main.java CMD ["java", "Main"] 从java 8移

我的理解是,您需要有一个分销商来使用openjdk(oracle openjdk,adoptopenjdk),但在docker repo for openjdk上,如果我只使用他们的参考文档,我如何找出谁是分销商

{下面的代码复制自openjdk官方docker repo}

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

从java 8移动到java 11

都写在docker页面上:

openjdk:

这是真实的图像。[…]这是套房 Debian版本的代码名,并指示映像的版本 基于。[……]

openjdk:(从12开始),[…]

从openjdk开始:12 默认映像以及-oracle和-oraclelinux7变体 基于在下提供的Oracle Linux 7官方映像 GPLv2符合Oracle Linux最终用户协议(EULA)。[……]

TL;DR:这些映像由Docker社区维护,版本<12从Debian或Alpine Linux提供OpenJDK版本,更高版本提供Oracle版本

顺便说一句,在包含8的版本之前,Oracle JDK的可用性更高。无论如何,Linux发行版构建了自己的二进制文件。OpenJDK、AmazonCorretto等的二进制发行版只存在于此,因为Oracle不再免费提供二进制版本。但是,如果您愿意,您可以下载OpenJDK并自己构建它

编辑:您还可以ssh到映像中并运行
java-version

Edit2:Java7及其支持

我想谈谈你对我的回答的评论。您特别要求提供Java版本7。此版本非常旧(2011年首次发布!),如果不支付商业支持费用,您将找不到对的任何长期支持。时期 这个版本也早于对Oracle二进制文件的许可证更改,所以整个采用OpenJDK参数并不重要

在OpenJDK Docker Hub页面上,您可以看到发布Java7版本的不同图片,有些是Alpine Linux,有些是Debian Jessie。据推测,我只验证了Debian版本的开源OpenJDK项目。因此,带有类路径异常的GPL应该是适用的许可证(阅读:您可以在商业上使用它)。 请注意,即使是对Debian Jessie的LTS支持也将在下个月结束:

这不一定是个问题,这取决于您希望在何处运行该映像(即,面对公共internet与私有intranet)

如果您必须坚持使用这样一个旧版本的Java,那么您几乎没有选择(可能需要一个现代的linux映像并自己构建OpenJDK[我想这会很痛苦])

Edit3:最新版本7支持和采用OpenJDK的v8+

好的,您在评论中澄清了,您实际上并不是在寻找版本7的构建。 但是,我确实找到了Azul提供的最新且受支持的Java 7版本:


但你说你正在运行版本8,希望能升级到11。然后我强烈推荐采用OpenJDK,这是目前最流行的构建。他们提供(注意:他们提供不同的JVM:Hotspot是默认的,强烈推荐,OpenJ9基于IBM的开发)

我对这个主题的理解有限,但debian或alpine可以在生产中免费使用,并且LTS与采用OpenJDK?@Bee一样。我已经为您的评论添加了答案。TL;DR:许可证可以用于生产使用,支持:算了吧,10年前的Java版本没有免费支持。顺便说一句,您必须区分操作系统和Java二进制文件的“支持”或更新。据我所知,无论是哪种操作系统,Java 7都没有公共后台补丁。Debian Jessie的操作系统更新将于下个月结束。我实际上希望从Java8迁移到Java11。上面示例dockerfile中显示的java 7只是docker hub上openjdk repo的参考文档中显示的第一个示例。不过,这确实为我指明了写作方向。你应该提到这一点。从公元前7年到公元前8年,许可证发生了变化(或者是在公元前8年之后,我忘了),这有着巨大的影响。Oracle版本不再长期用于商业用途。开放项目和供应商(如AdoptOpenJDK、Azul和Corretto)填补了这一空白,现在是获得自由许可、免费构建的推荐和首选方式。好吧,对于未来,我建议您在问题中提供更多信息,并询问您实际想要实现的目标(“我如何获得用于商业用途的java 8+docker设置”)与潜在解决方案特定的内容(“谁提供openjdk docker映像以及许可证是什么”)。