Podman - ポッド
ナビゲーションに移動
検索に移動
概要
Podmanのポッドは、1つ以上のコンテナをグループ化した論理的な単位である。
ポッドとは、Kubernetesプロジェクトによって普及した概念であり、同じ名前空間とcgroup (リソース制約) を共有する1つ以上のコンテナのことである。
これは、Kubernetesのポッドの概念に似ている。
ポッドの特徴を以下に示す。
- 共有ネームスペース
- ポッド内のコンテナは、ネットワークやIPC (プロセス間通信) 等のリソースを共有する。
- ライフサイクル管理
- ポッド内のコンテナは一緒に起動・停止する。
- ボリューム共有
- ポッド内のコンテナ間でボリュームを共有できる。
ポッドを使用するメリットを以下に示す。
- 密結合アプリケーション
- 関連するコンテナをグループ化して、効率的に管理できる。
- リソース効率
- 共有ネームスペースにより、リソースの効率的な利用が可能である。
- 簡易化された管理
- 複数のコンテナを1つの単位として扱うことができる。
ポッドの使用例を以下に示す。
- マイクロサービスアーキテクチャ
- 関連するサービスをポッドとしてグループ化する。
- サイドカーパターン
- メインアプリケーションと補助サービスを1つのポッドにする。
ポッドの管理 (Podman podサブコマンド)
Podman podサブコマンドは、Podmanでポッドを管理するために使用する。
これらのコマンドとオプションを使用することにより、Podmanでポッドを効果的に管理することができる。
ポッドは複数のコンテナをグループ化して、それらを1つの単位として扱うことができるため、マイクロサービスアーキテクチャの実装やアプリケーションの構造化に役立つ。
新規ポッドの作成
podman pod create
コマンドのオプションを以下に示す。
- --name
- ポッド名を指定する。
- -p または --publish
- ポートマッピングを設定する。
- --infra=<true または false>
- infraコンテナを作成するオプションである。(デフォルトは
true
)- trueを指定する場合は、infraコンテナを作成する。
- falseを指定する場合は、infraコンテナを作成しない。
- --infra-command <コマンド>
- infraコンテナで実行するコマンドを指定する。
- --infra-image <イメージ名>
- infraコンテナに使用するイメージを指定する。
- --cgroup-parent <親cgroup名>
- 親のcgroupを指定する。
- --label
- ポッドにラベルを追加する。
- --network <ネットワークモード>
- ポッドのネットワークモードを指定する。
- --share <名前空間名>
- 名前空間の共有を指定する。
- 例: ipc、net等
# 例 podman pod create --name <ポッド名> -p 8080:80
既存ポッドの一覧の表示
# 例 podman pod list または podman pod ls
停止しているポッドの起動
# 例 podman pod start <ポッド名>
実行中のポッドの停止
# 例 podman pod stop <ポッド名>
ポッドの再起動
# 例 podman pod restart <ポッド名>
ポッドの削除
# 例 podman pod remove <ポッド名> または podman pod rm <ポッド名>
ポッドの詳細情報の表示
# 例 podman pod inspect <ポッド名>
ポッド内で実行中のプロセスを表示
# 例 podman pod top <ポッド名>
ポッドの一時停止
# 例 podman pod pause <ポッド名>
一時停止したポッドを再開
# 例 podman pod unpause <ポッド名>
ポッドのリソース使用統計を表示
# 例 podman pod stats
停止している全てのポッドを削除
# 例 podman pod prune
ネットワークモード
podman pod create
コマンドの--network
オプションで指定できるネットワークモードを、以下に示す。
これらのネットワークモードを使用することにより、ポッドのネットワーク構成を柔軟に設定することができる。
選択するモードは、セキュリティ要件、パフォーマンスニーズ、アプリケーションのアーキテクチャなどに応じて決定する必要がある。
- bridge (デフォルト)
- ポッドは独立したネットワーク名前空間を持ち、仮想イーサネットペアを通じてホストのデフォルトのbridgeネットワークに接続される。
- 例:
podman pod create --network bridge
- host
- ポッドはホストのネットワーク名前空間を直接使用する。
- ホストのネットワークインターフェースに直接アクセスできるため、パフォーマンスが向上するが、セキュリティリスクも高まる。
- 例:
podman pod create --network host
- slirp4netns
- ルートレス (非特権) モードで実行する際に使用される。
- ユーザ名前空間内でネットワークを仮想化する。
- 例:
podman pod create --network slirp4netns
- none
- ポッドに対してネットワークインターフェースを作成しない。
- 完全に隔離されたネットワーク環境が必要な場合に使用する。
- 例:
podman pod create --network none
- カスタムネットワーク
podman network create
コマンドで作成したカスタムネットワークを指定することができる。- 例:
podman pod create --network my_custom_network
- container:<コンテナID または コンテナ名>
- 既存のコンテナのネットワーク名前空間を使用する。
- 例:
podman pod create --network container:my_existing_container
- ns:<既存のネットワーク名前空間名>
- 既存のネットワーク名前空間を直接指定する。
- 例:
podman pod create --network ns:/var/run/netns/my_netns
- private
- ポッドに対して新しい独立したネットワーク名前空間を作成するが、外部ネットワークには接続しない。
- 例:
podman pod create --network private