Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


2.3.4 JDKコンテナベースイメージの作成

このコンテナベースイメージは、トライアル版の場合、または通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入しない場合だけ作成します。

JDKコンテナベースイメージは、uCosminexus Application Runtime for Spring Bootを導入しないユーザ責務のコンテナイメージのベースイメージとして使用します。JDKのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。

JDKコンテナベースイメージの作成方法について説明します。

〈この項の構成〉

(1) Containerfileの作成

6.3.2 JDKコンテナベースイメージ」に記載されている要件を満たすように、JDKコンテナベースイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212     …1
RUN microdnf install \     …2
        -y \
        --setopt=install_weak_deps=0 \
        --nodocs \
        java-21-openjdk-headless \
        curl-minimal \
        jq \
    && microdnf clean all \
    && rm -rf /var/cache/dnf/*
USER 1001:0     …3
WORKDIR /deployments     …4

記述例の番号は、説明の番号と対応しています。

<説明>

  1. コンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

  2. 「RUN microdnf install \」の行から「&& rm -rf /var/cache/dnf/*」の行で、前提RPMパッケージをインストールします。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」の場合、かつJava SE 21準拠のJDKとして「OpenJDK 21」を使用しています。コンテナベースイメージがUBI 8の場合は、curl-minimalをcurlに変更してください。

  3. 任意のコンテナ実行ユーザ・グループを指定します。

  4. アプリケーション配置用ディレクトリを作成します。

■トライアル版の場合

FROM quay.io/almalinuxorg/9-minimal:9.5     …1
RUN microdnf install \     …2
        -y \
        --setopt=install_weak_deps=0 \
        --nodocs \
        java-21-openjdk-headless \
        curl-minimal \
        jq \
    && microdnf clean all \
    && rm -rf /var/cache/dnf/*
USER 1001:0     …3
WORKDIR /deployments     …4

記述例の番号は、説明の番号と対応しています。

<説明>

  1. コンテナベースイメージとしてAlmalinux 9 Minimal 9.5を指定します。

  2. 「RUN microdnf install \」の行から「&& rm -rf /var/cache/dnf/*」の行で、前提RPMパッケージをインストールします。この例では、Java SE 21準拠のJDKとして「OpenJDK 21」を使用しています。

  3. 任意のコンテナ実行ユーザ・グループを指定します。

  4. アプリケーション配置用ディレクトリを作成します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC(Security Context Constraints)と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID(非root)とGID「0」(root)でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」(root)を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2) Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒10 Containerfileと資材の配置構成

ファイル/ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

Containerfile

ユーザ

(凡例)−:該当しません。

(3) コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

JDKコンテナベースイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<JDKコンテナベースイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

(凡例)△:半角スペース1文字

<実行例>

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/jdk:latest .

この例では、JDKコンテナベースイメージのイメージ名・タグ名を「jdk:latest」としています。

(4) コンテナイメージの登録

ビルドしたJDKコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。