システムデーモンで管理(自動起動)
Podをシステムデーモンのサービスとして登録することで、ユーザログイン時、またはホストマシン起動時に自動起動することができます。
システムデーモンを利用する方法として以下の2つが提供されています。
1) $ podman generate systemd ~
既存のポッド、コンテナからsystemdユニットファイルを生成しますが、あくまで既存のポッドやコンテナを起動・停止するサービスのため、ポッドやコンテナを削除するとサービスは無効になります。機能的には、docker-composeのstop,startに相当します。
2) Quadlet(推奨)
既存のコンテナ定義を参照して、イメージから新規にコンテナを起動するsystemdユニットファイルを生成します(既存のコンテナに依存しません)。サービスを停止するとコンテナは削除されます。機能的にはdocker-composeのup,downに相当します。 注) Podman v4.9.3時点では、ポッドとコンテナの連携機能が未実装(v5以降で対応)
1) $ podman generate systemd ~
Podの確認
$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
8479ea3524b9 pod-jitsi Exited 4 hours ago de6fb0a4d245 5
7787d93bd426 pod-nginx Exited 4 hours ago 20552d55e11c 2
各Podの管理をシステムデーモンに受け渡します。そのためのサービスファイルをpodman generate コマンドで作成します。
$ podman generate systemd --name pod-nginx --files
以下の2つのファイルが作成されます。
pod-pod-nginx.service
container-nginx.service
$ podman generate systemd --name pod-jitsi --files
以下の6つのファイルが作成されます。
pod-pod-jitsi.service
container-web.service
container-prosody.service
container-jicofo.service
container-jvb.service
container-jigasi.service
作成された上記ファイルを、ユーザレベルでシステムデーモンで管理する場合には、~/.config/systemd/user
ディレクトリへコピーして下さい。
$ cp *.service ~/.config/systemd/user
各サービスの有効化
$ systemctl --user daemon-reload
$ systemctl --user enable pod-pod-jitsi
$ systemctl --user enable pod-pod-nginx
サービスの起動
$ systemctl --user start pod-pod-jitsi
$ systemctl --user start pod-pod-nginx
上記の方法では、ユーザがログインする時のみ有効なので、ユーザログインに関係なく起動するには、以下の設定をして下さい。
$ sudo loginctl enable-linger $(whoami)