第6章 コンテナー
以下の章では、コンテナーに関する RHEL 8 と RHEL 9 の間の最も重要な変更点を説明します。
6.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
コントロールグループのパフォーマンスの向上
以前のバージョンのコントロールグループ cgroup バージョン 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 ネットワークスタックに切り替える場合は、コンテナーイメージからコンテナーを再作成します。
Podman v5.0 の非推奨化
RHEL 9.5 では、Podman v5.0 で以下が非推奨となりました。
-
containers.confファイルに保存されているシステム接続とファームの情報が読み取り専用になりました。システム接続とファームの情報は、Podman のみが管理するpodman.connections.jsonファイルに保存されます。Podman は、[engine.service_destinations]や[farms]セクションなどの古い設定オプションを引き続きサポートします。必要に応じて手動で接続またはファームを追加できますが、podman system connection rmコマンドを使用してcontainers.confファイルから接続を削除することはできません。 -
slirp4netnsネットワークモードが非推奨となり、RHEL の今後のメジャーリリースで削除される予定です。pastaネットワークモードが、ルートレスコンテナーのデフォルトのネットワークモードです。 - ルートレスコンテナーの cgroups v1 が非推奨となり、RHEL の今後のメジャーリリースで削除される予定です。
runc コンテナーランタイムの非推奨化
runc コンテナーランタイムは非推奨となり、RHEL の今後のメジャーリリースで削除される予定です。デフォルトのコンテナーランタイムは crun です。