第1章 Image Mode for RHEL の概要
Image Mode for RHEL を使用すると、アプリケーションコンテナーと同じツールと手法を使用して、オペレーティングシステムを構築、テスト、およびデプロイできます。Image Mode for RHEL は、ブート可能なコンテナーイメージ registry.redhat.io/rhel9/rhel-bootc
を使用することで利用できます。RHEL のブート可能なコンテナーイメージは、従来は除外されていた起動に必要な追加コンポーネント (カーネル、initrd、ブートローダー、ファームウェアなど) が含まれている点で、既存のアプリケーションの Universal Base Images (UBI) とは異なります。
Red Hat は、rhel9/rhel-bootc
コンテナーイメージをテクノロジープレビューとして提供します。テクノロジープレビュー機能は、近々発表予定の製品イノベーションをリリースに先駆けて提供します。これにより、お客様は機能をテストし、開発プロセス中にフィードバックを提供することができます。ただし、これらの機能は完全にはサポートされません。テクノロジープレビュー機能のドキュメントは不完全であったり、基本的なインストールや設定に関する情報しか含まれていなかったりする場合があります。テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。
図1.1 Image Mode for RHEL を使用したオペレーティングシステムの構築、デプロイ、管理
Red Hat は、次のコンピューターアーキテクチャー用のブート可能なコンテナーイメージを提供します。
- AMD および Intel 64 ビットアーキテクチャー (x86-64-v2)
- 64 ビット ARM アーキテクチャー (ARMv8.0-A)
Image Mode for RHEL の利点は、システムのライフサイクル全体にわたって得られます。次のリストには、いくつかの最も重要な利点が含まれます。
- コンテナーイメージは他のイメージ形式よりも簡単に理解して使用でき、ビルドが高速
- Containerfile (Dockerfile とも呼ばれます) は、イメージのコンテンツとビルド手順を定義する単純なアプローチを提供します。コンテナーイメージは、しばしば他のイメージ作成ツールよりもビルドとイテレートが非常に高速です。
- プロセス、インフラストラクチャー、リリースアーティファクトを統合
- アプリケーションをコンテナーとして配布すると、同じインフラストラクチャーとプロセスを使用して、基盤となるオペレーティングシステムを管理できます。
- イミュータブルな更新
-
Image Mode for RHEL では、コンテナー化されたアプリケーションがイミュータブルな方法で更新されるのと同様に、オペレーティングシステムもイミュータブルな方法で更新されます。
rpm-ostree
システムを使用する場合と同じように、更新を起動し、必要に応じてロールバックできます。
rpm-ostree
を使用して変更を加えたり、コンテンツをインストールしたりすることはサポートされていません。
- ハイブリッドクラウド環境間での移植性
- ブート可能なコンテナーイメージは、物理環境、仮想化環境、クラウド環境、エッジ環境全体で使用できます。
コンテナーはイメージをビルド、トランスポート、実行するための基盤を提供します。ただし、これらのブート可能なコンテナーイメージをインストールメカニズムでデプロイするか、またはディスクイメージに変換した後は、システムはコンテナーとして実行されないことを理解することが重要です。
サポートされるイメージタイプ は次のとおりです。
- コンテナーイメージ形式: OCI
ディスクイメージ形式:
- ISO
- QEMU copy-on-write (QCOW2)、Raw
- Amazon Machine Image (AMI)
- 仮想マシンイメージ (VMI)
- 仮想マシンディスク (VMDK)
コンテナーは、以下の手段を提供することで、RHEL システムのライフサイクルを合理化します。
- コンテナーイメージのビルド
-
Containerfile を変更することで、ビルド時にオペレーティングシステムを設定できます。Image Mode for RHEL は、コンテナーイメージ
registry.redhat.io/rhel9/rhel-bootc
を使用することで利用できます。Podman、OpenShift Container Platform、またはその他の標準のコンテナービルドツールを使用して、コンテナーとコンテナーイメージを管理できます。CI/CD パイプラインを使用してビルドプロセスを自動化できます。 - コンテナーイメージのバージョン管理、ミラーリング、テスト
- Podman や OpenShift Container Platform などのコンテナーツールを使用して、派生したブート可能なコンテナーイメージのバージョン管理、ミラーリング、イントロスペクション、署名を行うことができます。
- コンテナーイメージのターゲット環境へのデプロイ
イメージをデプロイする方法はいくつか存在します。
- Anaconda: RHEL で使用されるインストールプログラムです。Anaconda とキックスタートを使用してインストールプロセスを自動化することで、すべてのイメージタイプをターゲット環境にデプロイできます。
-
bootc-image-builder
: コンテナーイメージをさまざまな種類のディスクイメージに変換し、必要に応じてイメージレジストリーまたはオブジェクトストレージにアップロードする、コンテナー化されたツールです。 -
bootc
: コンテナーレジストリーからコンテナーイメージを取得してシステムにインストールしたり、オペレーティングシステムを更新したり、既存の ostree ベースのシステムから切り替えたりするツールです。RHEL のブート可能なコンテナーイメージには、デフォルトでbootc
ユーティリティーが含まれており、すべてのイメージタイプで動作します。ただし、rpm-ostree
はサポートされていないため、変更を加えるために使用してはならないことに注意してください。
- オペレーティングシステムの更新
-
システムは、デプロイメント後にロールバックが可能なインプレーストランザクション更新をサポートします。自動更新はデフォルトでオンになっています。systemd サービスユニットと systemd タイマーユニットファイルがコンテナーレジストリーの更新をチェックし、システムに適用します。更新はトランザクショナルであるため、再起動が必要です。より高度なロールアウトやスケジュールされたロールアウトが必要な環境では、自動更新を無効にし、
bootc
ユーティリティーを使用してオペレーティングシステムを更新してください。
RHEL には 2 つのデプロイメントモードがあります。どちらも、デプロイメント時の安定性、信頼性、パフォーマンスは同様です。
-
パッケージモード: オペレーティングシステムは RPM パッケージを使用し、
dnf
パッケージマネージャーを使用して更新されます。ルートファイルシステムはミュータブルです。 -
イメージモード: 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 コンテナーレジストリーの認証 の記事を参照してください。