第3章 論理的にバインドされたイメージのビルドと管理
論理的にバインドされたイメージを使用すると、ベース bootc イメージのライフサイクルにバインドされたコンテナーイメージを扱うことができます。これは、アプリケーションとオペレーティングシステムのさまざまな運用プロセスを統合する際に役立ちます。コンテナーアプリケーションイメージは、ベースイメージからイメージファイルまたはそれに相当するものとして参照されます。したがって、システムインストール用の複数のコンテナーイメージを管理できます。
セキュリティーエージェントや監視ツールなど、ライフサイクルにバインドされたワークロードにコンテナーを使用できます。このようなワークロードは、bootc upgrade コマンドを使用してアップグレードすることもできます。
3.1. 論理的にバインドされたイメージの概要 リンクのコピーリンクがクリップボードにコピーされました!
論理的にバインドされたイメージを使用することで、コンテナーアプリケーションイメージをベース bootc システムイメージに関連付けることができます。デフォルトでは、たとえば podman によって実行されるアプリケーションコンテナーは、ホストのアップグレードとは独立したライフサイクルを持ちます。
論理的にバインドされたイメージの主な利点は、この方法でバインドされたアプリケーションコンテナーのライフサイクルがホストのアップグレードと連動される点にあります。これにより、ホストが新しいオペレーティングシステムへと再起動する前から、コンテナーが利用可能な状態となります。これらのコンテナーイメージは、bootc コンテナーが参照している場合、保持されます。
以下は、通常はホスト外部では更新されない、ライフサイクルにバインドされたワークロードの例です。
-
ロギング (例: journald
リモートログフォワーダーコンテナー) - 監視 (例: Prometheus node_exporter)
- 設定管理エージェント
- セキュリティーエージェント
この種のワークロードでは、ブートプロセスの早期段階でコンテナーを起動することが重要です。たとえば、ネットワークが利用可能になった直後の段階などがこれに該当します。論理的にバインドされたイメージを使用すると、ベース bootc イメージ内のバイナリーを ExecStart= で実行する場合と同等の信頼性で、(多くの場合 systemd を介して) コンテナーを起動できるようになります。
論理的にバインドされたイメージを使用する場合、システムが論理的にバインドされたイメージをインストールするように、複数のコンテナーイメージを管理できます。これは利点であると同時に欠点でもあります。たとえば、非接続インストールまたはオフラインインストールの場合は、1 つのコンテナーだけでなく、すべてのコンテナーをミラーリングします。アプリケーションイメージは、.image ファイルまたは同等のファイルとしてベースイメージからのみ参照されます。
- 論理的にバインドされたイメージのインストール
-
bootc installを実行する場合、論理的にバインドされたイメージがデフォルトの/var/lib/containersコンテナーストアに存在しています。イメージはターゲットシステムにコピーされ、bootc ベースイメージと共に起動時に直接表示されます。 - 論理的にバインドされたイメージのライフサイクル
-
論理的にバインドされたイメージは bootc によって参照され、bootc ベースのサーバーが起動した際に確実に利用可能となります。イメージは常に
bootc upgradeを使用してアップグレードされます。Podman などの他のプロセスでは、イメージをread-onlyとして使用できます。 - アップグレード、ロールバック、ガベージコレクションにおける論理的にバインドされたイメージの管理
- アップグレード中、論理的にバインドされたイメージは bootc によって排他的に管理されます。
- ロールバック中は、ロールバックデプロイメントに対応する論理的にバインドされたイメージが保持されます。
- bootc が、未使用のバインドされたイメージのガベージコレクションを実行します。