Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。
この記事は、Red Hat Developerのブログ記事、My advice for updating use of the Docker Hub OpenJDK image | Red Hat Developer の翻訳記事です。
コンテナ内のJava実行環境は、今後数カ月でアップデートを受けられなくなる可能性があります。そろそろ手を打つべきでしょう。この記事では、この問題を引き起こした原因である決定事項を説明し、解決策を提案します。
OpenJDK と Java SE のアップデート
OpenJDKは、Java Platform, Standard Edition (Java SE)のオープンソース実装で、複数の企業やコントリビューターが共同で開発しています。
OpenJDKのプロジェクトは、Java SE仕様の各新機能リリースを表しています。機能およびセキュリティの修正を含む、それらの機能に対するその後の更新は、JDKアップデートプロジェクトで働く保守開発者が主導しています。Java SE 8(2014年3月以降)、Java SE 11(2018年9月以降)、Java SE 17(2021年9月以降)などの長期サポートリリースは、リーダーとなる保守開発者の指揮のもと、四半期ごとにリリース更新が行われます。
リポジトリの保守開発者の役割は、リリースを公開する際に必要かつ適切なアップデートが行われるようにすることです。このようなアップデートの際には、複数の協力者の意見を考慮して決定します。Java SEの多くのベンダーとディストリビュータは、その後、OpenJDKのソースコードから構築して、独自のブランドのJava SE製品の新しいリリースを提供します。
Andrew Haley (Red Hat) は Java 8 アップデートと Java 11 アップデートのリーダで、Goetz Lindenmaier (SAP) は Java 17 アップデートのリーダである。Java SEをベースにしたOpenJDKの商用サポート付きディストリビューションを提供している企業に所属するアップデートの保守開発者は、このプロジェクトに独立した協力者として働いています。
Docker HubがOpenJDKイメージの廃止を決定
長年、Docker Hubの 公式イメージを構築する人たちは、Eclipse AdoptiumなどからOpenJDK Java SEアップデートバイナリを取り出し、独自のイメージを構築していました。しかし、2022年7月、Docker Hubのイメージ構築者は、この人気のあるイメージの非推奨を発表しました。
現在、Dockerは利用者に、OpenJDKのビルドを商用のJavaベンダーから、あるいはAdoptiumプロジェクトから直接入手するよう求めています。既存のOpenJDKイメージの更新は今後行われないので、ユーザーは別のプロバイダに移行しない限り、Java SEを使用する際の機能およびセキュリティの更新が遅れるリスクが生じます。私は、Adoptiumプロジェクトによって維持されている公式のEclipse Temurinイメージが、代わりのイメージとして当然の選択であると信じています。
Eclipse Adoptium builds JDKs
OpenJDK は、アップデートプロジェクトから直接バイナリアップデートを提供することはありません。2022年7月以降、これらの長期サポートされるJavaアップデートプロジェクトは、実行可能なOpenJDKバイナリを構築し配布するためにEclipse Adoptiumに左右されます。
Adoptium は、最新のすぐに使える OpenJDK バイナリを構築、テストし、オープンソースライセンスの下で配布することを目的としたプロジェクトです。Adoptiumは、彼らのOpenJDKのビルドをTemurinと呼んでいます。これらは、幅広いプロセッサとオペレーティングシステムで利用できます。このTemurinバイナリは、5億回以上ダウンロードされ、世界中の企業の本番環境から信頼を得ています。Adoptiumは、Eclipseソフトウェア財団を拠点とするベンダーに依存しないワーキンググループが主導しています。
Adoptium コミュニティは、OpenJDK のソースコードから直接ビルドされたバイナリを提供しています。これらのTemurinバイナリは、直接ダウンロード、インストーラ、またはコンテナイメージとして利用でき、一定の条件の下で構築されたOpenJDKアップデートソースを忠実に表しています。
公式のDocker Hub Temurinイメージには、いくつかのJava SEバージョンに対するOpenJDKアップデートの最新リリースが含まれており、様々なアプリケーションで徹底的にテストされています。このイメージは、OpenJDKイメージの代替としてそのまま使用できます。いくつかのOpenJDKイメージは、すでにTemurinバイナリを含んでいます。
OpenJDKのイメージからEclipse Temurinのイメージに移行する方法
Docker Hubの非推奨の決定には問題がありますが、解決策はあります。OpenJDKのイメージから、Docker HubのEclipse Temurinの公式イメージに移行することをお勧めします。
やり方は簡単です。以下のようなDockerfilesのFROM行を見るだけでいいのです。
FROM: openjdk:17
その行を以下のように変更します。
FROM eclipse-temurin:17
バージョン17以外のイメージの使用を変更するための手順も同じです。Adoptium コミュニティに問題を報告できます。
Red Hat サポート
皆さんもぜひ、Eclipse Temurinに乗り換えてみませんか?多くのアプリケーションイメージや ベストプラクティスの事例で、この変更は成功しています。
Red Hatは最近、Red Hat Runtimes、Red Hat OpenShift、およびRed Hat Build of OpenJDKの一部として、開発および本番におけるTemurinの直接サポートを発表しました。Red Hatのサポートにより、お客様はTemurinへの移行をスムーズに行え、最新のビジネスアプリケーションとプロセスを統合し自動化する製品の構築に引き続き集中できるようになります。