Podman - ポッド

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

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