Podman は Docker と同じ OCI コンテナを扱えるコンテナ実行環境です。Docker daemon に常時接続する構成ではなく、一般ユーザーで rootless に使いやすい点が特徴です。
この記事では、既存の Ubuntu 22.04 環境を保守する前提で、Ubuntu 標準パッケージから Podman を導入し、基本情報、rootless 実行、storage、Docker との違いを確認します。
関連する記事
この記事で確認すること
- Ubuntu 標準パッケージで Podman を導入する
- daemonless と rootless の基本的な位置づけ
podman infoとpodman runによる動作確認- ユーザー namespace と storage の確認
- Docker と使い分けるときの注意点
Podman の位置づけ
Podman は Docker と同じように image と container を扱えますが、常駐 daemon を前提にしない点が異なります。検証端末や個人ユーザー単位のコンテナ実行では、rootless の扱いやすさが利点になります。
| 項目 | Docker | Podman |
| 実行方式 | Docker daemon を経由する | daemonless に実行できる |
| rootless | 構成により利用する | 一般ユーザー利用を前提にしやすい |
| コマンド体系 | docker | podman |
| systemd 連携 | 別途 unit を作る | container から unit を生成しやすい |
パッケージをインストールする
Ubuntu 22.04 の標準リポジトリから podman を導入します。併せて registry 取得や build に使う周辺パッケージを入れておきます。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y podman uidmap slirp4netns fuse-overlayfs
podman --version基本情報を確認する
導入後、Podman の実行環境を確認します。rootless で実行している場合は、storage の場所や user namespace の状態も見ます。
podman info
podman system df
podman versionrootless 実行の前提を確認する
rootless Podman では、ユーザーごとの subuid / subgid が重要です。設定がない場合、image 展開や container 起動で失敗することがあります。
grep "^$USER:" /etc/subuid
grep "^$USER:" /etc/subgid
idsubuid と subgid を設定する
必要な範囲が未設定の場合は、対象ユーザーに subuid / subgid を割り当てます。すでに設定済みの場合は重複して追加しないようにします。
sudo usermod --add-subuids 100000-165535 "$USER"
sudo usermod --add-subgids 100000-165535 "$USER"
grep "^$USER:" /etc/subuid
grep "^$USER:" /etc/subgidimage を取得する
Podman では registry から image を取得します。tag を明示し、取得後にローカル image 一覧を確認します。
podman pull docker.io/library/alpine:latest
podman images
podman image inspect docker.io/library/alpine:latestコンテナを起動する
短い動作確認では --rm を付けて、終了後に container を残さないようにします。
podman run --rm docker.io/library/alpine:latest cat /etc/os-release
podman ps -aNginx コンテナを起動する
HTTP 応答を確認するため、Nginx コンテナをホスト側ポートへ公開します。rootless 実行では、低いポート番号の扱いに注意します。
podman run --rm -d \
--name podman-nginx \
-p 8080:80 \
docker.io/library/nginx:latest
podman ps
curl -I http://127.0.0.1:8080/
podman rm -f podman-nginxstorage の場所を確認する
rootless Podman では、image や container のデータはユーザーごとの領域に置かれます。容量やバックアップを考えるときは、この場所を確認しておきます。
podman info --format '{{.Store.GraphRoot}}'
podman info --format '{{.Store.RunRoot}}'
podman system dfDocker と併用する場合の注意
Podman と Docker は似たコマンド体系ですが、daemon、network、volume、systemd 連携の扱いが異なります。完全な置き換えとして扱う前に、実際に使う機能を確認します。
- Docker daemon 依存のツールは Podman でそのまま動かない場合がある
- rootless 実行では低いポート番号や network の扱いが異なる
- volume と storage の場所を Docker と混同しない
- Compose を使う場合は対応する実行方式を事前に確認する
- systemd 化する場合は Podman の unit 生成を別途確認する
不要な image と container を削除する
検証後は不要な container と image を確認し、対象を指定して削除します。既存環境では、削除前に利用中かどうかを確認します。
podman ps -a
podman images
podman image rm docker.io/library/alpine:latestまとめ
Ubuntu 22.04 では、標準パッケージから Podman を導入できます。Podman は daemonless に使えるコンテナ実行環境で、rootless 実行を前提にした確認が重要です。
導入後は、podman info、subuid / subgid、storage、image 取得、container 起動を確認します。Docker と似た操作感でも、daemon、network、storage の違いを意識して使い分けます。

