首页 > 解决方案 > 谁是openjdk docker镜像的经销商

问题描述

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

{以下代码复制自 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

标签: javadocker

解决方案


这一切都写在 docker 页面上:https ://hub.docker.com/_/openjdk/

openjdk:<版本>

这是事实上的形象。[...] 这些是 Debian 发行版的套件代码名称,并指示该映像基于哪个发行版。[...]

openjdk:<版本>(从 12 开始),[...]

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

TL;DR:镜像由 Docker 社区维护,版本 < 12 发布了来自 Debian 或 Alpine Linux 的 OpenJDK 构建,更高版本发布了 Oracle 构建。

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

编辑:您也可以 ssh 进入图像并运行java -version

Edit2:Java 7 和支持

我想谈谈你对我的回答的评论。您特别要求 Java 版本7。这个版本相当老了(2011 年首次发布!),如果不支付商业支持,您将找不到任何长期支持。时期。此版本还早于 Oracle 二进制文件的许可证更改,因此整个 AdoptOpenJDK 参数无关紧要。

在 OpenJDK Docker Hub 页面上,您可以看到发布 Java 7 构建的不同镜像,一些使用 Alpine Linux,一些使用 Debian Jessie。这些是 - 大概,我只为 Debian 验证过 - 由该发行版构建的开源 OpenJDK 项目。因此,具有类路径例外的 GPL 应该是适用的许可证(阅读:您可以在商业上使用它)。请注意,即使是对 Debian Jessie 的 LTS 支持也在下个月结束:https ://wiki.debian.org/LTS

这不一定是个问题,具体取决于您要在哪里运行该映像(即,面对公共互联网与私有 Intranet)。

如果您必须坚持使用如此旧版本的 Java,那么您几乎没有选择(也许采用现代 linux 映像并自己构建 OpenJDK [这将是痛苦的,我想])。

Edit3:来自 AdoptOpenJdk 的最新版本 7 支持和 v8+

好的,所以您在评论中澄清说,您实际上并不是在寻找版本 7 构建。但是,我确实找到了 Azul 提供的最新且受支持的 Java 7 版本:https ://hub.docker.com/r/azul/zulu-openjdk

但是您说您正在运行版本 8,希望转到 11。那么我强烈推荐 AdoptOpenJDK,它是目前最流行的构建。他们也提供Docker 镜像(注意:他们提供不同的 JVM:Hotspot 是默认的并且强烈推荐,OpenJ9 基于 IBM 的开发)


推荐阅读