14.5. 使用 Podman 生成 systemd 单元文件
Podman 允许 systemd
控制和管理容器进程。您可以使用 podman generate systemd
命令为现有容器和 pod 生成一个systemd
单元文件。建议使用 podman generate systemd
,因为生成的单元文件会频繁变化(通过对 Podman 的更新),并使用 podman generate systemd
确保获取最新版本的单元文件。
注意
从 Podman v4.6 开始,您可以使用描述如何以类似于常规 systemd
单元文件的格式运行容器的 Quadlets,并在 systemd
下隐藏运行容器的复杂性。
先决条件
-
container-tools
模块已安装。
流程
创建容器(如
myubi
):$ podman create --name myubi registry.access.redhat.com/ubi8: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
行描述了如何停止和移除容器。
-