Ohhnews

分类导航

$ cd ..
foojay原文

Azul Zulu Java 镜像正式入驻 Docker 官方镜像库之路

#docker#java#azul zulu#容器化#软件供应链

目录 什么是 Docker 官方镜像,以及它为何重要? 历程:历时两年的打造 Azul Zulu 官方镜像的构建与发布方式

本系列往期回顾:

经过两年多的合作、审查以及与 Docker 团队的反复沟通,Azul Zulu OpenJDK 构建版本已正式加入 Docker 官方镜像 (Docker's Official Images) 项目。这不仅仅是一项荣誉,它还改变了 Java 开发者拉取和信任容器基础镜像的方式。

正式公告已发布在 Azul 博客上。在本文中,我将带您了解这一过程的始末、其重要性,以及如何从今天开始使用这些镜像。

什么是 Docker 官方镜像,以及它为何重要?

Docker 官方镜像是一组由 Docker 直接维护的精选基础镜像,存放于 docker-library/official-images 仓库中。它们经过 Docker 员工的严格审查,保持安全补丁的实时更新,且无需任何命名空间前缀。这意味着您可以直接拉取 azul-zulu,而无需使用 azul/zulu-openjdk

对于企业团队而言,这种区别意义重大。官方镜像经过结构化的审查流程,持续进行漏洞扫描,并确保来源可靠、维护透明。当您基于某个镜像构建生产容器时,您需要确信它是经过维护且安全的。

历程:历时两年的打造

添加 Zulu 镜像的拉取请求 (Pull Request) 最初于 2024 年 1 月提交,而实际的提交记录可追溯至 2023 年 7 月。该请求最终于 2026 年 3 月 17 日合并。

这段时间虽然漫长,但也展示了 Docker 对官方镜像审查流程的严谨态度。随附的文档拉取请求也并行完成了自身的审查周期,并与镜像同步合并。

审查内容涵盖:

  • 镜像构建的可重复性
  • 更新节奏与维护承诺
  • 文档完整性
  • 标签命名规范与标签策略
  • 基础镜像的安全性

对于 Azul 而言,这也意味着承诺支持所有 Java 版本,而不仅仅是长期支持 (LTS) 版本。许多开发者会针对即将发布的版本进行测试、编写特性预览代码,并在正式发布前让代码库为下一个 LTS 版本做好准备。同时支持短期支持 (STS) 和 LTS 版本,意味着使用预览特性或即将发布版本的开发者也能得到覆盖。

Azul Zulu 官方镜像的构建与发布方式

将新的 Java 版本纳入 Docker 官方镜像项目并非仅仅是推送一个 Dockerfile 那么简单。每张镜像背后都有一套流水线,确保在用户执行 docker pull 之前,所有内容都经过了验证。

预发布验证

该流程在 Java 版本正式发布之前就已经开始。Azul 在内部预先构建镜像,并针对即将发布的版本进行验证,从而确保在 Java 正式发布的那一刻,镜像即可上线。

PM 审批与发布

当 Java 版本准备就绪时,产品经理 (PM) 会在发布前进行审查和批准。只有在获得批准后,经过预测试的 Dockerfile 才会发布到 Azul 的公共镜像仓库 github.com/AzulSystems/azul-zulu-images。该仓库是所有 Azul Zulu Dockerfile 的唯一事实来源,您可以查看其中的代码,明确了解每张镜像包含的具体内容。

提交至 Docker Hub

发布到 Docker 官方镜像项目是通过拉取请求完成的。Azul 团队通过 github.com/AzulSystems/official-images 的分支,向 docker-library/official-images 仓库提交变更。Docker 团队随后进行审查,一旦批准,便负责在其基础设施上构建最终的官方镜像。Azul 提供 Dockerfile 和验证结果,而 Docker 则负责构建并分发镜像。

这种职责分离是有意为之的,也是官方镜像项目值得信赖的原因之一。如果没有 Docker 之间的审查和构建流程,Azul 无法直接将镜像推送到 Docker Hub。

变化:从 Docker Hub 到 Docker 官方镜像

此前,Azul 的 Docker 镜像位于 hub.docker.com/r/azul/zulu-openjdk,提供基于 Debian、Ubuntu、Alpine、CentOS 和 distroless 的变体。这些镜像服务了许多用户,目前仍可使用,但随着官方镜像的成熟并覆盖相同领域,计划于 2026 年晚些时候弃用

官方镜像最初提供有限的变体,并将随时间推移逐步扩展。如果您需要特定的组合(例如特定 Java 版本搭配特定基础操作系统),请前往 AzulSystems/azul-zulu-images 仓库并提交工单。团队正在根据社区需求积极优化变体优先级。

为 Azul 客户提供更多选择

Docker 官方镜像基于社区可用 (CA) 构建版本。它们是免费、开源且对所有人开放的。如果您是 Azul 客户,您还可以访问订阅者可用 (SA) 镜像,这些镜像更进一步:

SA 镜像托管在 Azul 的私有注册表中,也可作为 Chainguard 容器使用,并包含:

  • 超出社区版本提供的安全更新
  • 扩展的平台与配置支持
  • 关键补丁的优先访问权
  • CPU(仅安全更新)和 PSU(全面季度更新)更新轨道之间的选择

请参阅关于在 Docker 容器Chainguard 容器 中运行 Azul Zulu SA 的文档。在本系列的后续文章中,我将详细介绍所有可用的 Zulu 容器选项。

结论

将 Azul Zulu 纳入 Docker 官方镜像项目历时两年多,但成果是值得的。这些镜像现已按照生产工作负载所需的标准进行了审查、扫描和维护。无论您是开始新项目还是迁移现有项目,FROM azul-zulu 现在都是您 Java 容器的可信起点。

虽然 Docker Hub 上旧的 azul/zulu-openjdk 镜像还会保留一段时间,但迁移路径非常清晰,现在是切换的最佳时机。请开始使用官方镜像;如果您需要的变体尚未提供,请在 AzulSystems/azul-zulu-images 中提交 Issue 进行请求。

在下一篇文章中,我将通过几个示例向您展示如何使用这些官方镜像来构建您的应用程序容器。