Podman入門操作ガイド

Podmanは、デーモンレスで動作するコンテナエンジンであり、イメージやコンテナの管理をシンプルに行えます。Docker CLIと互換性のある操作方法を提供しており、alias docker=podmanと設定すれば同じように使えます。多くのPodmanコマンドは、一般ユーザーでも特別な権限なしで実行可能です。

リポジトリ、イメージ、コンテナの関係を理解しておきましょう:

  • リポジトリ:イメージを提供・保存する場所。公式リポジトリ(例:Red Hatのregistry.redhat.io、Docker Hubのdocker.io)や、プライベートリポジトリがあります。
  • イメージ:仮想マシンやアプリケーションを独立した環境としてパッケージ化したもの。コンテナのテンプレートとして使います。
  • コンテナ:イメージを基に起動し、メモリ上で動作する実行インスタンスです。

イメージの取得

イメージは一意のIDと名前(タグを含む)で識別されます。タグを省略すると、デフォルトでlatestが適用されます。

イメージの検索

podman search nginx

イメージのダウンロード

podman pull docker.io/library/nginx

イメージの一覧表示

podman images

コンテナの起動

コンテナを起動する際、ホストのポートとコンテナのポートをバインドすることで、コンテナのIPを意識せずにサービスを公開できます。

  • -pオプションでポートをバインド:-p [ホストIP:]ホストポート:コンテナポート
  • 同じホストポートは1つのコンテナにしかバインドできません。
podman run -p 8080:80 -d docker.io/library/nginx:1.16.1-alpine

起動後、以下のコマンドでNginxにアクセスできます。

curl http://localhost:8080

コンテナの管理

コンテナの一覧表示

podman ps            # 実行中のコンテナのみ表示
podman ps -a         # すべてのコンテナを表示(停止中も含む)
podman ps -q         # コンテナIDのみ表示

コンテナの削除

podman rm コンテナID

コンテナの起動・停止・再起動・強制停止

podman start コンテナID
podman stop コンテナID
podman restart コンテナID
podman kill コンテナID

コンテナへの接続

podman exec -it コンテナID /bin/sh

オプションの意味:

  • -i:インタラクティブモード
  • -t:疑似端末を割り当て
  • -d:バックグラウンドで実行
  • --name:コンテナに名前を付ける

コンテナ内でIPアドレスを確認するには:

hostname -I
# 出力例: 10.88.0.2

コンテナ同士もこのIPで通信可能です。

イメージのメタデータ確認

podman inspect コンテナID

作成日時、イメージ名、ビルドコマンドなどの詳細が表示されます。

ファイルのコピー(コンテナ→ホスト)

podman cp コンテナID:コンテナ内のパス ホストの保存先パス

補足情報

コンテナ内でviがない場合は、以下のコマンドでインストール可能です。

apt-get install vim

Podmanコンテナはデータの永続保存には適していません。そのため、ホストのファイルやディレクトリをマウントして使用します。

  • マウント先が存在しない場合は自動で作成されます。
  • 既存のパスは上書きされます。
  • 複数のコンテナで同じホストパスをマウントし、データを共有できます。
podman run -d -v ホストパス:コンテナパス イメージ名:タグ
# 例
podman run --name nsdweb -p 80:80 -v /webroot:/var/www/html -d localhost/myos:httpd

タグ: Podman コンテナ イメージ Docker互換 ポートフォワーディング

7月2日 20:02 投稿