第21章 コンテナー
以下の章では、コンテナーに関する RHEL 8 と RHEL 9 の間の最も重要な変更点を説明します。
21.1. コンテナーに関する主な変更点
container-tools
メタパッケージが利用可能に
container-tools
RPM メタパッケージには、Podman、Buildah、Skopeo、CRIU、Udica、および必要なすべてのライブラリーが含まれており、RHEL 9 で利用できます。安定したストリームは RHEL 9 では利用できません。Podman、Buildah、Skopeo などへの安定したアクセスを受けるには、RHEL EUS サブスクリプションを使用します。
container-tools
メタパッケージをインストールするには、次のコマンドを実行します。
container-tools
メタパッケージをインストールします。$ sudo dnf install container-tools
コントロールグループのパフォーマンスの向上
以前のバージョンのコントロールグループ cgroups バージョン 1 (cgroup v1) では、さまざまなアプリケーションでパフォーマンスの問題が発生しました。コントロールグループの最新リリースである cgroup バージョン 2 (cgroup v2) により、システム管理者はパフォーマンスの問題を発生させずに、どのアプリケーションのリソースも制限できます。
RHEL 9 では、コントロールグループの新しいバージョンである cgroupsv2 がデフォルトで有効になっています。
Podman が、セキュアな短縮名に対応
イメージの短縮名のエイリアスは、[aliases]
テーブルの registries.conf
ファイルに設定できるようになりました。short-names モードは以下のようになります。
-
Enforcing:イメージのプル中に一致するエイリアスが見つからない場合、Podman はユーザーが非修飾レジストリーのいずれかを選択するよう求めます。選択したイメージを正常に取得すると、Podman は、
$HOME/.cache/containers/short-name-aliases.conf
ファイル (ルートレスユーザー) および/var/cache/containers/short-name-aliases.conf
(root ユーザー) に新しい短縮名のエイリアスを自動的に記録します。ユーザーを要求できない場合 (stdin や stdout など) が TTY ではない場合は、Podman は失敗します。short-name-aliases.conf
ファイルは、両方が同じエイリアスを指定する場合、registries.conf
ファイルよりも優先されることに注意してください。RHEL 9 では、Enforcing モードがデフォルトです。 - Permissive:enforcing モードと似ていますが、ユーザーにプロンプトが表示されないと Podman は失敗しません。代わりに、Podman は指定された順序で修飾されていないすべてのレジストリーを検索します。エイリアスは記録されないことに注意してください。RHEL 8 では、permissive モードがデフォルトです。
以下に例を示します。
unqualified-search-registries=["registry.fedoraproject.org", "quay.io"] [aliases] "fedora"="registry.fedoraproject.org/fedora"
registries.conf
のデフォルトコンテナーレジストリー
コンテナーレジストリーのリストは、/etc/containers/registries.conf
では root ユーザー、$HOME/.config/containers/registries.conf
では root 以外のユーザーとして検索できます。registries.conf
ファイルを変更することで、システム全体の検索設定におけるデフォルト値を変更できます。
RHEL 8 の場合、unqualified-search-registries
は次のようになります。
unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"] short-name-mode = "permissive"
RHEL 9 の場合、unqualified-search-registries
は次のようになります。
unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"] short-name-mode = "enforcing"
デフォルトの OCI ランタイムの変更
crun
OCI ランタイムが、container-tools:rhel8
モジュールで利用できるようになりました。crun
コンテナーランタイムは、コンテナーがルートレスユーザーの追加グループにアクセスできるようにするアノテーションに対応しています。これは、setgid が設定されたディレクトリーでボリュームをマウントする場合、またはユーザーがグループアクセスのみを持つ場合にコンテナー操作を行う際に役立ちます。
-
RHEL 8 のデフォルトコンテナーランタイムは
runc
です。 -
RHEL 9 のデフォルトコンテナーランタイムは
crun
です。
RHEL 7 ホストでの RHEL 9 コンテナーの実行がサポート対象外
RHEL 7 ホストでは、RHEL 9 コンテナーの実行に対応していません。
詳細は、Red Hat Enterprise Linux Container Compatibility Matrix を参照してください。
デフォルトのネットワークスタック
Podman は、CNI を RHEL 8 のデフォルトのネットワークスタックとして使用し、Netavark を RHEL 9 の新規インストールのデフォルトのネットワークスタックとして使用します。
RHEL8 から RHEL 9 へのインプレースアップグレードを実行する場合に、Podman のネットワークスタックは次のように設定されます。
-
Netavark:
/etc/containers/containers.conf ファイルの network_backend
パラメーター
が設定されていない場合、または RHEL8 の Podman のネットワークスタックを手動で Netavark にアップグレードした場合。 - CNI: アップグレード後に Podman を最初に実行したときに表示されるコンテナー、イメージ、Pod、またはネットワークがある場合。後で、新しい Netavark ネットワークスタックに手動でアップグレードできます。CNI と Netavark のネットワークスタックを切り替える方法については、8.6 章 Switching network stack from CNI to Netavark および 8.7 章 Switching network stack from Netavark to CNI を参照してください。
Red Hat は、正しいバックエンドが選択されるように、network_backend
パラメーターを明示的に指定することを推奨します。
podman container checkpoint
および podman container restore
コマンドを使用して、既存のコンテナーを別のネットワークスタックシステムに移行することはできません。CNI ネットワークスタックから Netavark ネットワークスタックに切り替える場合は、コンテナーイメージからコンテナーを再作成します。