第2章 RHEL bootc イメージのビルドとテスト
次の手順では、Podman を使用してコンテナーイメージをビルドおよびテストします。OpenShift Container Platform などの他のツールを使用することもできます。コンテナーを使用して RHEL システムを設定する例は、rhel-bootc-examples リポジトリーを参照してください。
図2.1 Containerfile からの指示を使用してイメージを構築し、コンテナーをテストし、イメージをレジストリーにプッシュして他のユーザーと共有する

一般的な Containerfile
の構造は次のとおりです。
FROM registry.redhat.io/rhel9/rhel-bootc:latest RUN dnf -y install [software] [dependencies] && dnf clean all ADD [application] ADD [configuration files] RUN [config scripts]
Containerfile
および Dockerfile
内で使用できる利用可能なコマンドは同じです。
ただし、rhel-9-bootc
イメージのシステムへのインストール時には、Containerfile
内の以下のコマンドは無視されます。
-
ENTRYPOINT
およびCMD
(OCI:Entrypoint/Cmd
): 代わりにCMD/sbin/init
を設定できます。 -
ENV
(OCI:Env
):systemd
設定を変更して、グローバルシステム環境を設定します。 -
EXPOSE
(OCI:exposedPorts
): ランタイム時にシステムのファイアウォールやネットワークがどのように機能するかとは無関係です。 -
USER
(OCI:User
): RHEL bootc 内の個々のサービスを、権限のないユーザーとして実行するように設定します。
rhel-9-bootc
コンテナーイメージは OCI イメージ形式を再利用します。
-
rhel-9-bootc
コンテナーイメージは、システムへのインストール時にはコンテナー設定セクション (Config
) を無視します。 -
rhel-9-bootc
コンテナーイメージは、podman
やdocker
などのコンテナーランタイムを使用してこのイメージを実行するときには、コンテナー設定セクション (Config
) を無視しません。
このリリースでは、カスタム rhel-bootc
ベースイメージのビルドはサポートされていません。
2.1. コンテナーイメージのビルド
Containerfile
からの指示を使用してイメージをビルドするには、podman build
コマンドを使用します。
前提条件
-
container-tools
メタパッケージがインストールされている。
手順
Containerfile
を作成します。$ cat Containerfile FROM registry.redhat.io/rhel9/rhel-bootc:latest RUN dnf -y install cloud-init && \ ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \ dnf clean all
この
Containerfile
の例では、cloud-init
ツールが追加されています。そのため、SSH キーを自動的に取得し、インフラストラクチャーからスクリプトを実行できるほか、インスタンスメタデータから設定とシークレットを収集することもできます。たとえば、このコンテナーイメージを、事前に生成した AWS または KVM ゲストシステムに使用できます。現在のディレクトリーの
Containerfile
を使用して、<image>
イメージをビルドします。$ podman build -t quay.io/<namespace>/<image>:<tag> .
検証
すべてのイメージをリスト表示します。
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/<image> latest b28cd00741b3 About a minute ago 2.1 GB