14.5. Podman を使用した systemd ユニットファイルの生成
Podman により、systemd
はコンテナープロセスを制御および管理できます。podman generate systemd
コマンドを使用して、既存のコンテナーと Pod の systemd
ユニットファイルを生成できます。生成されたユニットファイルは頻繁に変更され (Podman に対する更新)、podman generate systemd
で最新のユニットファイルの取得を確認できるので、podman generate systemd
の使用を推奨します。
Podman v4.6 以降では、Quadlet を使用できるようになりました。Quadlet を使用すると、通常の systemd
ユニットファイルと同様の形式でコンテナーを実行する方法を記述でき、systemd
でコンテナーを実行する際の複雑さを意識せずに済みます。
前提条件
-
container-tools
メタパッケージがインストールされている。
手順
コンテナー (例:
myubi
) を作成します。$ podman create --name myubi registry.access.redhat.com/ubi9:latest sleep infinity 0280afe98bb75a5c5e713b28de4b7c5cb49f156f1cce4a208f13fee2f75cb453
コンテナー名または ID を使用して
systemd
ユニットファイルを生成し、それを~/.config/systemd/user/container-myubi.service
ファイルに送ります。$ podman generate systemd --name myubi > ~/.config/systemd/user/container-myubi.service
検証
生成された
systemd
ユニットファイルの内容を表示します。$ cat ~/.config/systemd/user/container-myubi.service # container-myubi.service # autogenerated by Podman 3.3.1 # Wed Sep 8 20:34:46 CEST 2021 [Unit] Description=Podman container-myubi.service Documentation=man:podman-generate-systemd(1) Wants=network-online.target After=network-online.target RequiresMountsFor=/run/user/1000/containers [Service] Environment=PODMAN_SYSTEMD_UNIT=%n Restart=on-failure TimeoutStopSec=70 ExecStart=/usr/bin/podman start myubi ExecStop=/usr/bin/podman stop -t 10 myubi ExecStopPost=/usr/bin/podman stop -t 10 myubi PIDFile=/run/user/1000/containers/overlay-containers/9683103f58a32192c84801f0be93446cb33c1ee7d9cdda225b78049d7c5deea4/userdata/conmon.pid Type=forking [Install] WantedBy=multi-user.target default.target
-
Restart=on-failure
行は再起動ポリシーを設定し、サービスを正常に開始または停止できない場合、またはプロセスがゼロ以外で終了した場合に再起動するようにsystemd
に指示します。 -
ExecStart
行は、コンテナーの開始方法を示しています。 -
ExecStop
行は、コンテナーを停止して削除する方法を示しています。
-