Podman は Docker と似た CLI で image と container を操作できます。ただし daemonless、rootless、pod の扱いなど、Docker と同じ感覚で読み替えると見落としやすい違いがあります。
この記事では、Ubuntu 22.04 に Podman を導入済みの前提で、image の取得、container の起動、exec、停止、削除、pod の作成、rootless 実行時の確認ポイントを確認します。
関連する記事
この記事で確認すること
- Podman の image と container の基本操作
podman run/podman exec/podman rmの流れ- rootless 実行時の確認ポイント
- pod の作成とコンテナ追加
- Docker コマンドと読み替えるときの注意点
Podman 操作の前提
Podman は Docker と同じ OCI image を扱えます。コマンド名は podman ですが、pull、run、ps、exec など、基本操作は Docker と近い形です。
| 操作 | Docker | Podman |
| image 取得 | docker pull | podman pull |
| container 起動 | docker run | podman run |
| container 確認 | docker ps | podman ps |
| container 内実行 | docker exec | podman exec |
実行環境を確認する
まず Podman の実行環境を確認します。rootless で動かしている場合は、storage や user namespace の状態も確認します。
podman --version
podman info
podman system dfimage を取得する
registry から image を取得します。Docker Hub の公式 image を使う場合は、docker.io/library/ を明示すると取得元を読み取りやすくなります。
podman pull docker.io/library/ubuntu:22.04
podman images
podman image inspect docker.io/library/ubuntu:22.04一度だけコマンドを実行する
--rm を付けると、コマンド終了後に container が削除されます。短い検証や確認に向いています。
podman run --rm docker.io/library/ubuntu:22.04 cat /etc/os-release
podman ps -a名前付き container を起動する
後から exec、停止、削除を試すため、名前を付けて container を起動します。
podman run -itd --name ubuntu-podman docker.io/library/ubuntu:22.04 bash
podman ps
podman ps -acontainer 内でコマンドを実行する
起動中の container 内でコマンドを実行するには podman exec を使います。対話 shell だけでなく、単発の確認にも使えます。
podman exec ubuntu-podman hostname
podman exec ubuntu-podman cat /etc/os-release
podman exec -it ubuntu-podman bashcontainer を停止する
podman stop は container を停止します。停止した container は podman ps -a で確認できます。
podman stop ubuntu-podman
podman ps -acontainer を再起動する
停止済み container は podman start で再起動できます。検証用 container は削除して作り直す方が分かりやすい場合もあります。
podman start ubuntu-podman
podman ps
podman exec ubuntu-podman hostnamecontainer を削除する
不要になった container は停止してから削除します。検証環境では、対象名を確認してから削除します。
podman stop ubuntu-podman
podman rm ubuntu-podman
podman ps -apod を作成する
Podman では Kubernetes の pod に近い単位をローカルで扱えます。複数 container をまとめる前提がある場合は、pod を使うと関係を表現しやすくなります。
podman pod create --name web-pod -p 8080:80
podman run -d --pod web-pod --name web-nginx docker.io/library/nginx:latest
podman pod ps
podman ps --pod
curl -I http://127.0.0.1:8080/pod を削除する
pod に含まれる container をまとめて削除する場合は podman pod rm -f を使います。
podman pod rm -f web-pod
podman pod ps
podman ps -arootless 実行時に見るポイント
rootless Podman では、低いポート番号、storage、network の扱いが rootful 実行と異なる場合があります。Docker と同じ結果になる前提で進めず、実行ユーザーの状態を確認します。
podman infoで rootless 状態を確認する/etc/subuidと/etc/subgidを確認する- 低いポート番号を公開する場合は権限を確認する
- storage の場所を Docker と混同しない
- systemd 連携が必要な場合は別途 unit 化を確認する
podman info --format '{{.Host.Security.Rootless}}'
grep "^$USER:" /etc/subuid
grep "^$USER:" /etc/subgid
podman info --format '{{.Store.GraphRoot}}'不要な image を削除する
不要になった image は、利用中の container が残っていないことを確認してから削除します。
podman images
podman image rm docker.io/library/ubuntu:22.04
podman imagesまとめ
Podman の基本操作は Docker と似ていますが、daemonless、rootless、pod の扱いに違いがあります。image と container の基本操作は近くても、network、storage、systemd 連携まで含めると同じではありません。
Ubuntu 22.04 の既存環境では、まず podman pull、podman run、podman exec、podman ps、podman rm の流れを確認し、必要に応じて pod や systemd 連携へ進みます。

