Pod
Kubernetes や Podman で利用可能なコンテナをまとめる形式
Docker Compose との違い
ビルドできないのでimageから利用する形
ファイルではなく手順的なところから作るのでカスタマイズは不向き?
Podを作ったあとはPodman で単独コンテナ作成とほぼ同じ手順で追加できる
volumeマウント、port指定がコンテナ単位ではなくpod全体でざっくり?
仮想ネットワークではなく localhost の同一アドレスで動作する?
基本的に1コンテナで使われることが多いようだ
Linux の cgroups (仮想環境を閉じ込めるもの) などを持っている?
docker run を 2つに分けるだけで pod が作れるのでおすすめ
分けなくてもコンテナをそのまま Pod に変換できる
設定ファイルに保存できるので記述は1度で済む
ポートは pod 側で指定する
$ podman pod create -p 8080:8080 --name example-pod
podman run に --pod と --name などを指定して -p を外す
$ podman run --pod example-pod --name ngixxx image
podman create に変えると実行せず作成のみ
$ podman create --pod example-pod --name ngixxx image
pod名とコンテナ名は重複できない
開始
$ podman pod start example-pod
停止
$ podman pod stop example-pod
削除
$ podman pod rm example-pod
YAML出力前提ならPodではなく単純にコンテナを作成するだけでもよい --name をつける
$ podman create --name example -p 8080:8080 image
kube generate で --name の名前を指定する
PodのYAMLを生成する
Pod設定の保存 Containerからも作成可能
$ podman kube generate example-pod -f example-pod.yaml
pod.yaml から実行
$ podman kube pley example-pod.yaml
停止
$ podman kube down example-pod.yaml
Podman Quadlet
Podman Quadlet の Kube Play Unitを利用してPodを登録する
DB
PostgreSQL Pod
MariaDB Pod
Oracle Database Pod
SQL Server Pod
MySQL Server Pod
Db2 Pod
利点
systemd 登録が簡単 (Podman Quadlet Kube unit)
欠点
Docker Compose ではできる Dockerfile と連動できない