4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Podmanの基本的な使い方ガイド 2025年版

Posted at

はじめに

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と比較して以下のようなセキュリティとパフォーマンス上の利点があります。

  1. 分離されたプロセス空間
    各コンテナが独立したプロセスツリーで実行されるため、一つのコンテナに問題が発生しても他に影響しにくい。
  2. 権限の最小化
    ルートレスモードによりホストシステムへの特権アクセスを最小限に抑制
  3. サービス障害点の排除
    デーモンがないため、デーモンの障害でコンテナ全体が影響を受けるリスクがない。
  4. メモリ効率
    デーモンプロセスが不要なため、特に小規模環境でのメモリ使用量が少ない。

2025年の最新機能

2025年の最新バージョンのPodmanでは、以下のような機能強化が行われています。

  1. コンテナ自動更新機能
    コンテナイメージの更新を自動的に検知し、必要に応じてコンテナを再起動する機能
  2. 拡張されたネットワーク機能
    より柔軟なネットワーク設定と管理が可能に
  3. Pod クローン機能
    podman pod cloneコマンドにより既存のPodのコピーを作成可能
  4. セキュリティ強化
    SELinuxとの統合改善により、より厳密なセキュリティ管理が可能
  5. Kubernetes対応の拡充
    より複雑なKubernetes設定との互換性向上

まとめ

Podmanは、Dockerと互換性を持ちながらも、デーモンレス・アーキテクチャとルートレスモードという特徴により、セキュリティとパフォーマンスの面で優れたコンテナ管理ツールとなっています。特に、企業環境やセキュリティが重視される場面、またはKubernetesとの連携が必要な場合に効果を発揮します。

本記事で紹介した基本的な使い方を参考に、ぜひPodmanを試してみてください。また、Podman Desktopを活用することで、GUIから直感的にコンテナを管理することも可能です。

参考資料

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?