搜索

14.5. 使用 Podman 生成 systemd 单元文件

download PDF

Podman 允许 systemd 控制和管理容器进程。您可以使用 podman generate systemd 命令为现有的容器和 pod 生成一个 systemd 单元文件。建议使用 podman generate systemd,因为生成的单元文件会频繁变化(通过对 Podman 的更新),并使用 podman generate systemd 确保获取最新版本的单元文件。

注意

从 Podman v4.6 开始,您可以使用描述如何以类似于常规 systemd 单元文件的格式运行容器的 Quadlets ,并隐藏了在 systemd 下运行容器的复杂性。

先决条件

  • container-tools 元数据包已安装。

流程

  1. 创建容器(如 myubi):

    $ podman create --name myubi registry.access.redhat.com/ubi9:latest sleep infinity
    0280afe98bb75a5c5e713b28de4b7c5cb49f156f1cce4a208f13fee2f75cb453
  2. 使用容器名称或 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 行描述了如何停止和移除容器。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.