【要約】DockerのコンテナをPodmanでRootlessで動かしたら苦労したので、ちょっと愚痴りたい。 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者がセキュリティ向上を目的に、DockerからPodmanのRootlessモードへ移行した際、以下の問題に直面した。
- ・1024番未満の特権ポートを一般ユーザ権限で占有できない。
- ・UID/GIDマッピングの影響で、コンテナ内のファイル権限が不整合となる。
- ・ユーザーのログアウトに伴い、コンテナプロセスが強制終了する。
- ・ネットワーク構成の差異により、ファイアウォールの設定が機能しない。
// Approach
開発者は、Linuxのシステム設定変更やPodman固有のコマンドを用いて、各課題を個別に解決した。
- ・
sysctlでnet.ipv4.ip_unprivileged_port_startを変更し、低位ポートの使用を許可。 - ・
podman unshareを用い、コンテナ内のUIDに対応するホスト側の所有権を計算・設定。 - ・
loginctl enable-lingerを実行し、ユーザーログアウト後もプロセスを維持。 - ・ufwの設定を、コンテナIPではなくホストIPを対象とするよう修正。
// Result
一連のトラブルシューティングにより、Rootless環境でのメールサーバの安定稼働を実現した。
- ・UID/GIDマッピングの仕組みを理解し、永続化データの権限問題を解消。
- ・ユーザーセッションに依存しないコンテナのライフサイクル管理を確立。
- ・Dockerとの決定的な仕様差(デーモン型かユーザープロセス型か)を明確化した。
Senior Engineer Insight
> Rootless Podmanへの移行は、単なるツールの置き換えではない。ユーザー空間でのネットワークエミュレーションやUIDマッピングの設計を伴う、システムアーキテクチャの再設計である。セキュリティ向上と引き換えに、運用管理の複雑性が増大する。実戦投入時は、最初からSystemd(Quadlet)による管理や、Linger設定を前提とした設計を行うべきだ。