Podman
エンジニアのためのWebチートシート
Podmanは、デーモンレス・ルートレスなコンテナエンジンです。 Docker互換のCLIを持ちつつ、Pod管理やKubernetes YAML連携などの独自機能を備えています。 コンテナ操作、イメージ管理、Pod管理、Kubernetes連携、Dockerとの違いなどをチートシートにまとめました。
コンテナの実行
podman run [options] IMAGE [COMMAND]
| オプション | 説明 |
|---|---|
| -d | バックグラウンドで実行(デタッチモード) |
| --name [name] | コンテナに名前を付ける |
| -p [host]:[container] | ポートマッピング(ホスト:コンテナ) |
| -v [host]:[container] | ボリュームマウント(ホスト:コンテナ) |
| -e KEY=VALUE | 環境変数を設定 |
| --rm | 終了時にコンテナを自動削除 |
| -it | インタラクティブモード + TTY割当 |
| --network [name] | ネットワークを指定 |
| --restart [policy] | 再起動ポリシーを設定 |
コンテナ管理
| コマンド | 説明 |
|---|---|
| podman ps | 実行中のコンテナ一覧を表示 |
| podman ps -a | 全コンテナ一覧を表示(停止中含む) |
| podman start [container] | コンテナを起動 |
| podman stop [container] | コンテナを停止 |
| podman restart [container] | コンテナを再起動 |
| podman rm [container] | コンテナを削除 |
| podman exec -it [container] /bin/bash | 実行中のコンテナ内でコマンドを実行 |
| podman logs [container] | コンテナのログを表示 |
| podman logs -f [container] | コンテナのログをリアルタイムで表示 |
| podman inspect [container] | コンテナの詳細情報を表示 |
| podman stats | コンテナのリソース使用状況を表示 |
| podman top [container] | コンテナ内のプロセス一覧を表示 |
| podman cp [container]:[path] [host_path] | コンテナとホスト間でファイルをコピー |
イメージ管理
| コマンド | 説明 |
|---|---|
| podman images | ローカルイメージの一覧を表示 |
| podman pull [image] | レジストリからイメージを取得 |
| podman push [image] | レジストリにイメージをプッシュ |
| podman build -t [name] . | Containerfileからイメージをビルド |
| podman tag [image] [new_name]:[tag] | イメージにタグを付ける |
| podman rmi [image] | イメージを削除 |
| podman search [term] | レジストリからイメージを検索 |
| podman history [image] | イメージのレイヤー履歴を表示 |
| podman save -o [file].tar [image] | イメージをtarファイルに保存 |
| podman load -i [file].tar | tarファイルからイメージを読み込み |
| podman login [registry] | コンテナレジストリにログイン |
Pod管理
| コマンド | 説明 |
|---|---|
| podman pod create --name [name] -p [port] | Podを作成 |
| podman pod ps | Pod一覧を表示 |
| podman pod start [pod] | Podを起動 |
| podman pod stop [pod] | Podを停止 |
| podman pod rm [pod] | Podを削除 |
| podman pod inspect [pod] | Podの詳細情報を表示 |
Pod作成例:Webアプリ + DB構成
ボリュームとネットワーク
Volume
| コマンド | 説明 |
|---|---|
| podman volume create [name] | ボリュームを作成 |
| podman volume ls | ボリューム一覧を表示 |
| podman volume inspect [name] | ボリュームの詳細情報を表示 |
| podman volume rm [name] | ボリュームを削除 |
| podman volume prune | 未使用ボリュームを一括削除 |
Network
| コマンド | 説明 |
|---|---|
| podman network create [name] | ネットワークを作成 |
| podman network ls | ネットワーク一覧を表示 |
| podman network inspect [name] | ネットワークの詳細情報を表示 |
| podman network rm [name] | ネットワークを削除 |
| podman network connect [network] [container] | コンテナをネットワークに接続 |
| podman network disconnect [network] [container] | コンテナをネットワークから切断 |
Kubernetes連携
| コマンド | 説明 |
|---|---|
| podman kube generate [pod/container] | コンテナ/PodからKubernetes YAMLを生成 |
| podman kube play [file.yaml] | Kubernetes YAMLからPodを作成・実行 |
| podman kube down [file.yaml] | kube playで作成したリソースを削除 |
Kubernetes YAML生成・適用の流れ
システム管理
| コマンド | 説明 |
|---|---|
| podman system prune -a | 未使用のコンテナ、イメージ、ネットワークを一括削除 |
| podman info | Podmanシステム情報を表示 |
| podman version | Podmanバージョンを表示 |
| podman system df | ディスク使用状況を表示 |
Podman Machine(macOS / Windows)
| コマンド | 説明 |
|---|---|
| podman machine init | Podmanマシンを初期化(macOS/Windows) |
| podman machine start | Podmanマシンを起動 |
| podman machine stop | Podmanマシンを停止 |
| podman machine list | Podmanマシン一覧を表示 |
| podman machine rm | Podmanマシンを削除 |
Dockerとの違い
| 項目 | Podman | Docker |
|---|---|---|
| アーキテクチャ | デーモンレス(fork/exec) | デーモン(dockerd)が必要 |
| ルートレス実行 | デフォルトでルートレス | 追加設定が必要 |
| Pod対応 | ネイティブ対応 | 非対応(Docker Compose使用) |
| Kubernetes YAML | podman kube で生成・適用 | 直接的なサポートなし |
| Compose | podman-compose / podman compose | docker compose(組み込み) |
| ソケット | ユーザーソケット($XDG_RUNTIME_DIR) | /var/run/docker.sock |
alias
Docker CLIとの互換性を活用して、aliasを設定することでDockerコマンドをそのまま使えます。