ブログ

Armadillo Base OS:OpenJDKが動作するコンテナイメージ(Eclipse Temurin)の紹介

at_takuma.fukuda
2023年10月20日 6時58分

概要

Armadillo Base OS搭載製品でJavaアプリケーションを開発・動作させるには、JDKがインストールされたコンテナを作成する必要があります。
この記事ではEclipse TemurinというOpenJDKが動作するコンテナイメージをご紹介します。
ご紹介したコンテナイメージをpodman pullコマンドでダウンロードするなどしてご使用ください。

はじめに

オープンソースのJDKであるOpenJDKを使用するコンテナの作成をご案内します。
Dockerhubから各ディストリビューションのコンテナイメージをダウンロードし、そこにOpenJDKをインストールすれば使用可能となります。
これについては別途、DebianやAlpineのコンテナでのインストール方法・動作確認例の記事を作成する予定です。
今回は、よりミニマルなコンテナを作成するため、OpenJDKがプリインストールされたコンテナイメージを使用します。
Dockerhubには公式コンテナイメージとしてOpenJDKのコンテナイメージがあります。
openjdk
ただしこのイメージは使用非推奨となっているようです。

This image is officially deprecated

そこで、代替イメージとして記載のあるものの内、Eclipse Temurinを使用します。
eclipse-temurin

Eclipse Temurinとは

Eclipse TemurinはEclipse Adoptiumから提供されているOpenJDKのディストリビューションで、AdoptOpenJDKの後継品です。
DebianやUbuntu、Alpine向けのパッケージとしても配布されています。
Armadillo-IoT A6EやArmadillo-640などのarmhfアーキテクチャでも使用可能なコンテナイメージが配布されています。

Eclipse Temurinのコンテナイメージ

Eclipse Temurinのコンテナイメージには、コンパイラなどを含まないJREのみのものと、コンパイラなどを含むものがあります。
コンパイル済みのJavaアプリケーションを実行する場合はJREのみのコンテナで十分ですが、
コンテナ内でJavaアプリケーションのコンパイルを行う必要がある場合はコンパイラを含むコンテナを使用する必要があります。
JREのみのイメージの方がイメージの容量を抑えられるため、
開発・デバッグ中はコンパイラを含むイメージを使用し、
リリース時はJREのみのものを使用するというような使い分けが望ましいと思われます。 Eclipse Temurinのコンテナイメージのパスおよびタグは以下の通りです。

コンパイラを含むもの:
docker.io/eclipse-temurin:17
JREのみのもの:
docker.io/eclipse-temurin:17-jre

参考情報:arm32v7環境でのeclipse-temurinのコンテナイメージサイズ(2023/10/19時点)

  • eclipse-temurin :17 : 368MB
  • eclipse-temurin :17-jre : 231MB

使い方

podman pullやDockerfileを使ったpodman buildなどを使ってコンテナイメージを取得し、コンテナを作成してお使いください。
具体的には以下の記事が参考となるかと思います。

tagにlatestを指定するとアーキテクチャに対応したイメージが無い場合があります。
また、JREのみのコンテナイメージの取得にもtagの指定が必要になりますので、
必ずdockerhubで必要なtagを確認してコンテナイメージを取得してください。
また、アーキテクチャの指定も必ず行うようにしてください。
例えば、Armadillo-IoT A6Eで直接JREのみのコンテナイメージをpodman pullでダウンロードする場合は、以下のように実行する必要があります。

armadillo:~# podman pull docker.io/arm32v7/eclipse-temurin:17-jre

2023/10/19時点ではarm32v7およびarm64v8のそれぞれで使用できる最新のバージョンはいずれもOpenJDK17に対応した「17」であるようです。
それぞれのコンテナが対応するJDKやランタイムのバージョンは以下のようになります。
arm32v7の場合

container:# java --version
openjdk 17.0.8.1 2023-08-24
OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1)
OpenJDK Server VM Temurin-17.0.8.1+1 (build 17.0.8.1+1, mixed mode, sharing)

arm64v8の場合

container:# java --version
openjdk 17.0.8.1 2023-08-24
OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1)
OpenJDK 64-Bit Server VM Temurin-17.0.8.1+1 (build 17.0.8.1+1, mixed mode, sharing)