はじめに
Podmanを使う機会があったので調べたことをまとめました。
コンテナ技術の進化に伴い、Dockerだけでなく様々なコンテナエンジンが登場しています。その中でも「Podman(Pod Manager)」は、Red Hatが主導して開発しているオープンソースのコンテナエンジンで、デーモンレス・アーキテクチャとrootlessモードの標準サポートという特徴を持っています。
本記事では、Podmanの最新バージョンを使った基本的な使い方をまとめました。Dockerからの移行を検討している方や、新しくコンテナ技術を学び始める方に役立つと嬉しいです。
Podmanとは?
Podmanは、Red Hatが開発したオープンソースのコンテナ管理ツールです。名前の由来は「Pod Manager」で、Kubernetesのような「Pod」の概念をサポートしています。コンテナの開発、管理、実行のためのツールとして、Docker互換のCLIを提供しながらも、以下のような特徴を持っています。
-
デーモンレス・アーキテクチャ
デーモンプロセスを必要としないため、セキュリティリスクの低減とシステムの単純化 -
ルートレスモード
標準で非特権ユーザーによるコンテナ実行をサポート -
Kubernetesとの親和性
Podの概念をネイティブにサポート -
systemdとの統合
コンテナをシステムサービスとして管理可能
アーキテクチャ図
2025年現在、Podmanは多くの企業や開発者に採用され、特にセキュリティが重視される環境や、Kubernetesを活用している環境で重宝されています。
インストール方法
Linux (RHEL/Fedora/CentOS系)
# RHEL, CentOS, Fedora
sudo dnf install podman
Linux (Debian/Ubuntu系)
# Debian, Ubuntu
sudo apt-get update
sudo apt-get install -y podman
macOS
Homebrewを使用してインストールします。
brew install podman
インストール後、PodmanのVMを初期化して起動します。
podman machine init
podman machine start
Windows
Windows用のインストーラーが公式サイトから提供されています。または、Chocolateyパッケージマネージャーを使用することもできます。
choco install podman
インストール後、同様にPodmanのVMを初期化・起動します。
podman machine init
podman machine start
Podman Desktopの利用
Podmanを直感的に使用するために、Podman Desktopというグラフィカルインターフェイスも利用できます。これは2023年6月にバージョン1.0がリリースされ、2025年現在では様々な機能が追加されています。
公式サイト(https://podman-desktop.io) からダウンロードしてインストールできます。
基本的なコマンド
Podmanコマンドは基本的にDockerコマンドと互換性があります。以下に基本的なコマンドをまとめました。
イメージの取得と管理
# イメージの検索
podman search nginx
# イメージのダウンロード
podman pull nginx:latest
# ダウンロード済みイメージの一覧表示
podman images
# イメージの削除
podman rmi nginx:latest
コンテナの作成と管理
# コンテナの起動 (フォアグラウンド)
podman run -it --name my-nginx nginx:latest
# コンテナの起動 (バックグラウンド)
podman run -d --name my-nginx -p 8080:80 nginx:latest
# 実行中のコンテナ一覧
podman ps
# すべてのコンテナ一覧
podman ps -a
# コンテナの停止
podman stop my-nginx
# コンテナの開始
podman start my-nginx
# コンテナの削除
podman rm my-nginx
コンテナ内でのコマンド実行
# 実行中のコンテナ内でコマンドを実行
podman exec -it my-nginx /bin/bash
# コンテナのログを表示
podman logs my-nginx
# コンテナのプロセス情報
podman top my-nginx
Podの管理
Podmanの特徴の一つはKubernetesスタイルの「Pod」をサポートしていることです。Podは複数のコンテナをグループ化したものです:
# Podの作成
podman pod create --name my-pod
# Podにコンテナを追加
podman run --pod my-pod -d nginx:latest
# もう一つコンテナを追加
podman run --pod my-pod -d redis:latest
# Podの一覧表示
podman pod list
# Podの詳細表示
podman pod inspect my-pod
# Podの停止
podman pod stop my-pod
# Podの開始
podman pod start my-pod
# Podの削除 (すべてのコンテナも削除)
podman pod rm my-pod
ルートレスモード
Podmanの大きな特徴として、ルートレスモードがデフォルトで有効になっています。つまり、通常のユーザーがrootになったり、sudoを使用したりせずにコンテナを実行できます。
# ユーザー権限でコンテナを実行
podman run -it alpine sh
ルートレスモードでは、UIとGIDのマッピングを使用して、ホストとコンテナ間の権限の分離を実現しています。ルートレスモードの場合、コンテナ内のroot(UID 0)はホスト上の通常ユーザーにマッピングされます。
systemdとの統合
Podmanの特徴の一つは、systemdとの統合が容易なことです。以下のコマンドでsystemdのユニットファイルを生成し、コンテナをシステムサービスとして管理できます。
# コンテナのsystemdサービスファイルを生成
podman generate systemd --name my-nginx --files
# システムレベルのサービスとして使用する場合
sudo mv container-my-nginx.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now container-my-nginx
# ユーザーレベルのサービスとして使用する場合
mkdir -p ~/.config/systemd/user/
mv container-my-nginx.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now container-my-nginx
Docker Composeの使用
Podmanは「podman compose」コマンドを通じてDocker Compose形式のファイルもサポートしています。
# Docker Compose形式のファイルから環境を起動
podman-compose up -d
# 環境の停止
podman-compose down
最新のPodmanでは、Podmanのインストール時に自動的にpodman-composeも導入されるようになっています。
Kubernetes統合
PodmanはKubernetesとの連携も強化されています。
# コンテナをKubernetes YAMLに変換
podman generate kube my-nginx > my-nginx.yaml
# Kubernetes YAMLからコンテナを起動
podman play kube my-nginx.yaml
この機能を使うことで、本番のKubernetes環境で実行されるコンテナをローカルでテストすることが容易になります。
Podman Desktopの活用
最新のPodman Desktop 1.0以降では、以下の機能が提供されています。
- GUIによるコンテナとイメージの管理
- コンテナログのリアルタイム表示
- ボリュームとネットワークの可視化と管理
- Kubernetes YAMLの編集と適用
- 拡張機能によるエコシステムの拡張
Podman Desktopを使うことで、コマンドラインに慣れていないユーザーでも直感的にコンテナを管理できます。
パフォーマンスとセキュリティ
Podmanはデーモンレス・アーキテクチャとルートレスモードの採用により、Dockerと比較して以下のようなセキュリティとパフォーマンス上の利点があります。
-
分離されたプロセス空間
各コンテナが独立したプロセスツリーで実行されるため、一つのコンテナに問題が発生しても他に影響しにくい。 -
権限の最小化
ルートレスモードによりホストシステムへの特権アクセスを最小限に抑制 -
サービス障害点の排除
デーモンがないため、デーモンの障害でコンテナ全体が影響を受けるリスクがない。 -
メモリ効率
デーモンプロセスが不要なため、特に小規模環境でのメモリ使用量が少ない。
2025年の最新機能
2025年の最新バージョンのPodmanでは、以下のような機能強化が行われています。
-
コンテナ自動更新機能
コンテナイメージの更新を自動的に検知し、必要に応じてコンテナを再起動する機能 -
拡張されたネットワーク機能
より柔軟なネットワーク設定と管理が可能に -
Pod クローン機能
podman pod clone
コマンドにより既存のPodのコピーを作成可能 -
セキュリティ強化
SELinuxとの統合改善により、より厳密なセキュリティ管理が可能 -
Kubernetes対応の拡充
より複雑なKubernetes設定との互換性向上
まとめ
Podmanは、Dockerと互換性を持ちながらも、デーモンレス・アーキテクチャとルートレスモードという特徴により、セキュリティとパフォーマンスの面で優れたコンテナ管理ツールとなっています。特に、企業環境やセキュリティが重視される場面、またはKubernetesとの連携が必要な場合に効果を発揮します。
本記事で紹介した基本的な使い方を参考に、ぜひPodmanを試してみてください。また、Podman Desktopを活用することで、GUIから直感的にコンテナを管理することも可能です。