第1章 Image Mode for RHEL の概要
Image Mode for RHEL を使用すると、アプリケーションコンテナーと同じツールと手法を使用して、オペレーティングシステムを構築、テスト、およびデプロイできます。Image Mode for RHEL は、registry.redhat.io/rhel9/rhel-bootc
bootc イメージを使用することで利用できます。RHEL bootc イメージは、従来は除外されていた起動に必要な追加コンポーネント (カーネル、initrd、ブートローダー、ファームウェアなど) が含まれている点で、既存のアプリケーションの Universal Base Images (UBI) とは異なります。
rhel-bootc
コンテナーイメージに基づく rhel-bootc
およびユーザーが作成したコンテナーは、Red Hat Enterprise Linux エンドユーザーライセンス契約 (EULA) に従います。これらのイメージを公開して再配布することはできません。
図1.1 Image Mode for RHEL を使用したオペレーティングシステムの構築、デプロイ、管理

Red Hat は、次のコンピューターアーキテクチャー用の bootc イメージを提供します。
- AMD および Intel 64 ビットアーキテクチャー (x86-64-v2)
- 64 ビット ARM アーキテクチャー (ARMv8.0-A)
- IBM Power Systems 64 ビットリトルエンディアンアーキテクチャー (ppc64le)
- IBM Z 64 ビットアーキテクチャー (s390x)
Image Mode for RHEL の利点は、システムのライフサイクル全体にわたって得られます。次のリストには、いくつかの最も重要な利点が含まれます。
- コンテナーイメージは他のイメージ形式よりも簡単に理解して使用でき、ビルドが高速
- Containerfile (Dockerfile とも呼ばれます) は、イメージのコンテンツとビルド手順を定義する単純なアプローチを提供します。コンテナーイメージは、しばしば他のイメージ作成ツールよりもビルドとイテレートが非常に高速です。
- プロセス、インフラストラクチャー、リリースアーティファクトを統合
- アプリケーションをコンテナーとして配布すると、同じインフラストラクチャーとプロセスを使用して、基盤となるオペレーティングシステムを管理できます。
- イミュータブルな更新
-
Image Mode for RHEL では、コンテナー化されたアプリケーションがイミュータブルな方法で更新されるのと同様に、オペレーティングシステムもイミュータブルな方法で更新されます。
rpm-ostree
システムを使用する場合と同じように、更新を起動し、必要に応じてロールバックできます。
rpm-ostree
を使用して変更を加えたり、コンテンツをインストールしたりすることはサポートされていません。
- ハイブリッドクラウド環境間での移植性
- bootc イメージは、物理環境、仮想化環境、クラウド環境、エッジ環境全体で使用できます。
コンテナーはイメージをビルド、転送、実行するための基盤となります。ただし、これらの bootc イメージを、インストールメカニズムを使用してデプロイするか、ディスクイメージに変換した後は、システムがコンテナーとして実行されないことを理解することが重要です。
- Bootc は、次のコンテナーイメージ形式とディスクイメージ形式をサポートします。
イメージタイプ | ターゲット環境 |
---|---|
| 物理環境、仮想化環境、クラウド環境、およびエッジ環境。 |
| Amazon Machine Image。 |
| QEMU。 |
| VMDK for vSphere。 |
| 最初に見つかったディスクにインストールする無人 Anaconda インストーラー。 |
| フォーマットされていない raw ディスク。QEMU および Libvirt でもサポートされる。 |
| 仮想 PC 用の VHD など。 |
| Google Compute Engine (GCE) 環境。 |
コンテナーは、以下の手段を提供することで、RHEL システムのライフサイクルを合理化します。
- コンテナーイメージのビルド
-
Containerfile を変更することで、ビルド時にオペレーティングシステムを設定できます。Image Mode for RHEL は、コンテナーイメージ
registry.redhat.io/rhel9/rhel-bootc
を使用することで利用できます。Podman、OpenShift Container Platform、またはその他の標準のコンテナービルドツールを使用して、コンテナーとコンテナーイメージを管理できます。CI/CD パイプラインを使用してビルドプロセスを自動化できます。 - コンテナーイメージのバージョン管理、ミラーリング、テスト
- Podman や OpenShift Container Platform などのコンテナーツールを使用して、派生した bootc イメージのバージョン管理、ミラーリング、イントロスペクション、署名を行うことができます。
- コンテナーイメージのターゲット環境へのデプロイ
イメージをデプロイする方法はいくつか存在します。
- Anaconda: RHEL で使用されるインストールプログラムです。Anaconda とキックスタートを使用してインストールプロセスを自動化することで、すべてのイメージタイプをターゲット環境にデプロイできます。
-
bootc-image-builder
: コンテナーイメージをさまざまな種類のディスクイメージに変換し、必要に応じてイメージレジストリーまたはオブジェクトストレージにアップロードする、コンテナー化されたツールです。 -
bootc
: コンテナーレジストリーからコンテナーイメージを取得してシステムにインストールしたり、オペレーティングシステムを更新したり、既存の ostree ベースのシステムから切り替えたりするツールです。RHEL bootc イメージは、デフォルトでbootc
ユーティリティーを含んでおり、すべてのイメージタイプに対応しています。ただし、rpm-ostree
はサポートされていないため、変更を加えるために使用してはならないことに注意してください。
- オペレーティングシステムの更新
-
システムは、デプロイメント後にロールバックが可能なインプレーストランザクション更新をサポートします。自動更新はデフォルトでオンになっています。systemd サービスユニットと systemd タイマーユニットファイルがコンテナーレジストリーの更新をチェックし、システムに適用します。更新はトランザクショナルであるため、再起動が必要です。より高度なロールアウトやスケジュールされたロールアウトが必要な環境では、自動更新を無効にし、
bootc
ユーティリティーを使用してオペレーティングシステムを更新してください。
RHEL には 2 つのデプロイメントモードがあります。どちらも、デプロイメント時の安定性、信頼性、パフォーマンスは同様です。相違点を参照してください。
-
パッケージモード: RHEL Image Builder を使用してパッケージベースのイメージと OSTree イメージをビルドできます。
composer-cli
または Web コンソールを使用してパッケージモードのイメージを管理できます。オペレーティングシステムは RPM パッケージを使用し、dnf
パッケージマネージャーを使用して更新されます。ルートファイルシステムはミュータブルです。ただし、オペレーティングシステムをコンテナー化されたアプリケーションとして管理することはできません。RHEL システムイメージのカスタマイズ を参照してください。 -
イメージモード: RHEL をビルド、デプロイ、管理するためのコンテナーネイティブなアプローチです。同じ RPM パッケージがベースイメージとして配信され、更新はコンテナーイメージとしてデプロイされます。ルートファイルシステムは、
/etc
と/var
を除きデフォルトではイミュータブルであり、ほとんどのコンテンツはコンテナーイメージから取得されます。
イメージモード または パッケージモード のデプロイメントのいずれかを使用して、オペレーティングシステムを構築、テスト、および共有できます。また、イメージモード を使用すると、他のコンテナー化されたアプリケーションと同じ方法でオペレーティングシステムを管理できます。
1.1. 前提条件
- RHEL 9 システムをサブスクライブしている。詳細は、RHEL システム登録のスタートガイド ドキュメントを参照してください。
- コンテナーレジストリーがある。レジストリーをローカルに作成することも、Quay.io サービスで無料アカウントを作成することもできます。Quay.io アカウントを作成するには、Red Hat Quay.io ページを参照してください。
- 実稼働用または開発者サブスクリプションを持つ Red Hat アカウントがある。無料の開発者サブスクリプションは、Red Hat Enterprise Linux Overview ページで入手できます。
- registry.redhat.io に対して認証済みである。詳細は、Red Hat Container Registry Authentication 記事を参照してください。