Web制作、Web開発の歩き方

サーバー、データベース、インフラに関するトピックス

■第21話:rootlessとrootfulモードの違い(podman)

(最終更新日:2025.05.20)

NoSQLのイメージ
この記事は3分で読めます!
(絵が小さい場合はスマホを横に)

「モードを使い分けよう」

コンテナ技術の進化に伴い、セキュリティと柔軟性を両立する運用方法が求められている。 Podmanはその中で、従来のroot権限に依存しない「rootlessモード」と、より高い権限を持つ「rootfulモード」の両方に対応する。 本節では、それぞれの特徴や使い分けのポイントについて解説し、安全かつ効率的なコンテナ運用の基礎を理解する。


1.rootlessとrootfulモードの違い

rootlessモードとは、その名の通り「root権限なしで動作するコンテナ環境」のことだ。 つまり、通常ユーザー(一般ユーザー)が Podmanを使ってコンテナを実行でき、ホスト側でroot権限を必要とする。 特徴としては、以下の通りである。

    ■特徴
  1. セキュリティが高い:root権限を持たないため、コンテナからホストシステムへの侵入リスクが低い
  2. システムに影響を与えない:ユーザーのホームディレクトリ下にネットワーク設定やボリュームが作成され、システム全体に影響を与えにくい
  3. 他のユーザーと完全に分離:それぞれのユーザーが独立したPodman環境を持てる
    ■制約
  1. 低いポート番号(1024未満)を開けない:例:80番ポートでWebサーバーを立てたい場合、rootlessではできない
  2. 一部のネットワーク機能に制限がある:ホストネットワークの利用や特権コンテナ(privileged mode)などが制限される
  3. Cgroup管理が制限される:リソース制御における一部の機能が使えないことがある(cgroup v2 使用時に特に顕著)
2.rootfulモードとは

rootfulモードは、従来のDockerと同様に、root権限でPodmanを実行する方式だ。 システム全体への影響力が大きい分、すべての機能をフルに利用できる。

    ■特徴
  1. すべての機能が使用可能:低ポート開放や特権コンテナの作成、NFSなどの高度なマウント機能もサポートされる
  2. Dockerと同等の互換性:Docker Compose などと併用する場合にも挙動が近い
    ■リスク
  1. セキュリティリスクがある:コンテナが何らかの方法で権限を逸脱した場合、ホストシステム全体に被害が及ぶ可能性がある
  2. 全体運用に影響:設定ミスやコンテナ内での暴走が、他ユーザーやシステムに影響を及ぶ
システム管理者

3.rootlessとrootful モードの切り替え方法

Podman v3以降では、「Podman machine」を使って簡単に rootlessとrootfulを切り替えられるようになった。 この設定は、podman machineの起動設定に影響するため、rootless/rootfulの切り替えは仮想マシンの再起動が必要だ。 下記では「現在モードの確認」「rootfulモードへの切替」「rootlessモードへの切替」のコマンドを示す。

コマンド

rootlessモードとrootfulモード、どちらを選ぶべきかという点だが、以下のようにまとめられる。 開発環境やテスト用途で、セキュアに運用したい場合はrootlessにすると良いだろう。

どっちを選択するか(rootless or rootful?)

利用目的 推奨モード
開発環境・テスト用途 rootless(セキュアで安全)
本番運用・特権が必要なケース rootful(柔軟性が高い)
4.まとめ

Podman の大きな特徴の一つは、この rootlessモードのサポートだ。 セキュリティを重視する現代の運用においては、root権限を使わない運用が可能であることが非常に重要である。 とはいえ、すべての機能を活用するためにはrootfulモードも必要だ。 目的に応じて適切にモードを選び、必要に応じて切り替える柔軟な運用が理想的だ。


▼参考図書、サイト

   podman  podman 公式サイト
   podman desktop  podman desktop 公式サイト