为什么 OpenJDK 发布的新 Java 8 镜像不再基于 Alpine,而是基于 Debian 10(Buster)?

Yod*_*oda 3 java alpine-linux debian-buster

我浏览通过OpenJDK的发布最新图片:https://hub.docker.com/layers/openjdk/library/openjdk/8u252-jre-slim-buster/images/sha256-01dfdeac537b9d9adcb2399028fba063733a77186c5264e6b059987002c0e48c?context=explore个个switchedt

所有新的 Java 8 镜像都使用基于 Debian 的,是否有任何官方声明表明 OpenJDK 从 Alpine 迁移到 Debian,为什么?

为什么 OpenJDK 发布的新 Java 8 镜像不再基于 Alpine,而是基于 Debian 10(Buster)?

val*_*ano 5

2019 年 5 月,OpenJDK Dockerhub 镜像已转向使用官方的、经过认证的 OpenJDK 二进制文件,而不是发行版的 OpenJDK 包:https :
//github.com/docker-library/openjdk/pull/322

这些二进制文件是由 AdoptOpenJDK 提供的、由 RedHat 测试和支持的普通上游OpenJDK 构建。二进制文件基于 glibc,因此虽然它们与 Debian 兼容,但它们与 Alpine Linux 不兼容。

背景:

直到 2019 年 5 月,OpenJDK 都有 Debian 和 Alpine 镜像,使用打包的 OpenJDK 版本并通过分发包管理器安装,apt用于 Debian, apk用于 Alpine。Debian 和 Alpine 包是由社区构建和维护的,并且没有在商业企业 OpenJDK 构建的范围内进行验证 - 例如,它们通常没有经过JCK测试。

然后,发生了一起事件,其中 Debian 打包的 OpenJDK 8 预发布版本已进入官方 OpenJDK 8 docker 映像。该问题最初在此线程中报告:https :
//mail.openjdk.java.net/pipermail/jdk8u-dev/2019-May/009330.html

在那之后,决定 OpenJDK 镜像将只使用官方的、经过 JCK 测试的构建,以拥有一个“事实来源”。这个决定影响了 Debian 和 Alpine 镜像。

高山 OpenJDK 支持:

OpenJDK 项目目前还没有对 Alpine Linux 的官方支持。Alpine Linux 建立在musl libc之上,它是最小且严格的 POSIX 实现,通常与标准glibc不兼容。musl libc 的 OpenJDK 移植正在 OpenJDK 的项目Portola下开发。

Alpine Linuxopenjdk8软件包由IcedTea提供。IceaTea 项目为 OpenJDK 6、7 和 8 提供了构建,并且在 OpenJDK 尚未完全开源时就开始了。这些构建是社区制作的,而不是官方的 OpenJDK 构建。此外,Alpine Linux OpenJDK 8 IcedTea 构建是由 Alpine 维护者从源代码构建的。因此,这些构建不能被视为 OpenJDK 的生产就绪、经过认证的构建。

远离 Alpine 镜像对 Alpine Java 生态系统产生了巨大影响;从那以后,许多项目都将他们的图像从 Alpine 移走了,这很不幸。您可以在此处找到更多详细信息。