第4章 Red Hat Universal Base イメージの使用 (標準、最小、ランタイム)

Red Hat Enterprise Linux (RHEL) ベースイメージは、コンテナーイメージのベースとして使用できます。RHEL 8 では、すべての Red Hat ベースイメージを、新しい Universal Base Images (UBI) として利用できます。これには、自由に利用でき、再配布可能な、RHEL の標準、最小、init、および Red Hat Software Collections のバージョンが含まれます。RHEL ベースイメージは、以下のとおりです。

  • サポートされる - コンテナー化されたアプリケーションでの使用は、Red Hat によりサポートされています。Red Hat Enterprise Linux で、安全で、テストされ、認定されたものと同じソフトウェアパッケージが含まれています。
  • カタログ化される - 「Red Hat Container Catalog」 の一覧に追加されます。ここでは、各イメージの説明、技術詳細、および正常指数を確認できます。
  • 更新される - 明確に定義された更新スケジュールで提供されるため、最新のソフトウェアを入手していることが明確になります (「Red Hat Container Image Updates」 を参照)。
  • 追跡される - エラータにより追跡され、各更新の変更を理解するのに役立ちます。
  • 再利用可能: ベースイメージを一度実稼働環境にダウンロードしてキャッシュする必要があります。各ベースイメージは、基盤として含まれるすべてのコンテナーで再利用できます。

RHEL 8 用の UBI は、コンテナーイメージを構築するための、UBI 以外の先行オペレーション (rhel6rhel7rhel-init、および rhel-minimal のベースイメージ) と同じ品質の RHEL ソフトウェアを提供しますが、それがどのように使用され配布されるかについては、より多くの自由が提供されています。

注記

利用可能な Red Hat UBI イメージの一覧と、UBI リポジトリーおよびソースコードに関連する情報は、「Universal Base Images (UBI): Images, repositories, and packages」を参照してください。

4.1. Red Hat のベースイメージの概要

Red Hat では、カスタマイズ用のイメージに使用するために、複数のベースイメージを提供しています。RHEL 8 イメージはすべて UBI イメージです。これは、イメージを自由に取得して再配布できることを意味します。このイメージは、Red Hat Registry (registry.access.redhat.com および registry.redhat.io) から入手できます (「Red Hat Container Catalog」で説明されています)。

RHEL 8 では、標準、最小、および init のベースイメージが利用できます。Red Hat は、「Application Streams」に基づく一連の言語ランタイムイメージも提供します。これは、特定のランタイムを必要とするアプリケーションのコンテナーを作成する際に構築できます。ランタイムイメージには python、php、ruby、nodejs などが含まれます。

RHEL 7 イメージのセットがあり、RHEL 8 システムで実行できます。RHEL 7 には、UBI (再配布可能) と UBI 以外 (サブスクリプションアクセスが必要で、配布不可) のベースイメージがあります。このようなイメージには、通常のベースイメージ (rhel7rhel-init、および rhel-minimal) と、UBI イメージ (ubi7、 ubi7-init、および ubi7-minimal) がそれぞれ 3 つ含まれます。

Red Hat は、RHEL 6 システムでコンテナーを実行するツールを提供しませんが、使用可能な RHEL 6 コンテナーイメージを提供します。RHEL 6 で利用できるベースイメージには、スタンダート (rhel6) と init (rhel6-init) がありますが、最小の RHEL 6 イメージはありません。同様に、RHEL 6 UBI イメージはありません。

4.1.1. 標準の Red Hat ベースイメージの使用

標準の RHEL 8 ベースイメージ (ubi8) には、次のような堅牢なソフトウェア機能があります。

  • init system - systemd サービスの管理に必要な systemd 初期化システムのすべての機能は、標準のベースイメージで利用できます。この init システムを使用すると、Web サーバー (httpd) や FTP サーバー (vsftpd) などのサービスを自動的に起動するように事前設定された RPM パッケージをインストールできます。
  • yum - ソフトウェアパッケージをインストールするのに必要とされるソフトウェアは、標準の yum コマンドセットから提供されます (yumyum-config-manageryumdownloader など)。UBI ベースイメージでは、yum リポジトリーに自由にアクセスして、ソフトウェアを追加および更新できます。
  • ユーティリティー - 標準ベースイメージには、コンテナーで機能する便利なユーティリティーが含まれています。このベースイメージにあり、最小イメージにはないユーティリティーには、tardmidecodegzipgetfacl (およびその他の acl コマンド)、dmsetup (およびその他のデバイスマッパーコマンド) が含まれます。

4.1.2. 最小 Red Hat ベースイメージの使用

ubi8-minimal イメージは、余計な部分を取り除いた RHEL イメージで、必要最小限のベースイメージが必要な場合に使用します。大規模な Red Hat エコシステムとして使用できる最小ベースイメージを探している場合は、この最小イメージからで始めることができます。

RHEL の最小イメージは、標準イメージの半分未満のサイズである独自のコンテナーイメージのベースを提供します。ただし、RHEL ソフトウェアリポジトリーに描画し、ソフトウェアが提供するコンプライアンス要件を維持することができます。

以下は、最小ベースイメージの機能の一部です。

  • サイズが小さい - 最小イメージは、ディスクでは約 92M、圧縮では 32M です。これにより、サイズが、標準イメージの半分に満たなくなります。
  • ソフトウェアインストール (microdnf) - ソフトウェアリポジトリーおよび RPM ソフトウェアパッケージを使用する完全な yum 機能を追加する代わりに、最小イメージには microdnf ユーティリティーが含まれます。microdnf は、dnf の縮小バージョンです。これには、リポジトリーの有効化および無効化と、パッケージのインストール、削除、および更新に必要なもののみが含まれます。また、パッケージのインストール後にキャッシュをクリーンアップする、clean オプションもあります。
  • RHEL パッケージに基づいている - 最小イメージには通常の RHEL ソフトウェア RPM パッケージが含まれており、追加の言語ファイルやドキュメントなど、いくつかの機能が削除されるため、イメージ構築には引き続き RHEL リポジトリーを使用できます。これにより、RHEL ソフトウェアに基づくコンプライアンス要件を維持できます。最小イメージの機能は、RHEL で実行するアプリケーションの試行に最適であり、オーバーヘッドの量が必要に小さくなります。最小イメージでは実現できないものは、初期化およびサービスの管理システム (systemd または System V init)、Python ランタイム環境、および大量の一般的なシェルユーティリティーです。
  • microdnf のモジュールはサポート対象外 - dnf コマンドで使用されるモジュールにより、利用可能な場合は、同じソフトウェアの複数のバージョンをインストールできます。最小イメージに含まれている microdnf ユーティリティーは、モジュールに対応していません。したがって、モジュールが必要な場合は、yum を含む最小ではないベースイメージを使用する必要があります。

ただし、オペレーティングシステムから要件が少ない単純なバイナリーまたはパッケージ済みのソフトウェアの実行を試みるだけの場合は、最小イメージが必要になることがあります。アプリケーションで RHEL の他のソフトウェアに依存関係がある場合は、microdnf を使用してビルド時に必要なパッケージをインストールできます。

Red Hat では、常に最小イメージの最新版が使用されることを前提としています。これは ubi8/ubi-minimal または ubi8-minimalを要求することを意味します。Red Hat では、今後、以前のバージョンの最小イメージをサポートする予定はありません。

4.1.3. Init Red Hat ベースイメージの使用

UBI の ubi8-init イメージには、systemd 初期化システムが含まれているため、Web サーバーやファイルサーバーなどの systemd サービスを実行するイメージを構築するのに役立ちます。Init イメージの内容は、標準イメージで得られるものよりも少なくなりますが、最小イメージよりも多くなります。

注記

ubi8-init イメージは ubi8 イメージの上に構築されるため、その内容はほとんど同じです。ただし、重要な相違点がいくつかあります。ubi8-init では、Cmd は bashではなく /sbin/init に設定され、デフォルトで systemd Init サービスを開始します。これには ps およびプロセス関連のコマンド (procps-ng パッケージ) が含まれていますが、ubi8 には含まれていません。また、ubi8-init では SIGRTMIN+3StopSignal として設定しています。これは、ubi8-init の systemd が通常の終了信号 (SIGTERM および SIGKILL) を無視しているためですが、SIGRTMIN+3 を受け取った場合は無効になります。

これまでは、Red Hat Enterprise Linux のベースコンテナーイメージは、エンタープライズアプリケーションを実行する目的で設計されていましたが、再配布する予定はありませんでした。したがって、アプリケーションを再配布する必要がある組織によっては、課題が発生する可能性があります。これにより、Red Hat Universal Base イメージが登場しました。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。