podman-generate-systemd(1)

NAME

podman-generate-systemd - Generate systemd unit file(s) for a container. Not supported for the remote client

SYNOPSIS

podman generate systemd [options] container|pod

DESCRIPTION

podman generate systemd will create a systemd unit file that can be used to control a container or pod. By default, the command will print the content of the unit files to stdout.

Note that this command is not supported for the remote client.

OPTIONS:

--files, -f

Generate files instead of printing to stdout. The generated files are named {container,pod}-{ID,name}.service and will be placed in the current working directory.

--name, -n

Use the name of the container for the start, stop, and description in the unit file

--timeout, -t=value

Override the default stop timeout for the container with the given value.

--restart-policy=policy Set the systemd restart policy. The restart-policy must be one of: "no", "on-success", "on-failure", "on-abnormal", "on-watchdog", "on-abort", or "always". The default policy is on-failure.

Examples

Create and print a systemd unit file for a container running nginx with an always restart policy and 1-second timeout to stdout.

    $ podman create --name nginx nginx:latest
    $ podman generate systemd --restart-policy=always -t 1 nginx
    # container-de1e3223b1b888bc02d0962dd6cb5855eb00734061013ffdd3479d225abacdc6.service
    # autogenerated by Podman 1.5.2
    # Wed Aug 21 09:46:45 CEST 2019
    [Unit]
    Description=Podman container-de1e3223b1b888bc02d0962dd6cb5855eb00734061013ffdd3479d225abacdc6.service
    Documentation=man:podman-generate-systemd(1)
    [Service]
    Restart=always
    ExecStart=/usr/bin/podman start de1e3223b1b888bc02d0962dd6cb5855eb00734061013ffdd3479d225abacdc6
    ExecStop=/usr/bin/podman stop -t 1 de1e3223b1b888bc02d0962dd6cb5855eb00734061013ffdd3479d225abacdc6
    KillMode=none
    Type=forking
    PIDFile=/run/user/1000/overlay-containers/de1e3223b1b888bc02d0962dd6cb5855eb00734061013ffdd3479d225abacdc6/userdata/conmon.pid
    [Install]
    WantedBy=multi-user.target

Create systemd unit files for a pod with two simple alpine containers. Note that these container services cannot be started or stopped individually via systemctl; they are managed by the pod service. You can still use systemctl status or journalctl to examine them.

    $ podman pod create --name systemd-pod
    $ podman create --pod systemd-pod alpine top
    $ podman create --pod systemd-pod alpine top
    $ podman generate systemd --files --name systemd-pod
    /home/user/pod-systemd-pod.service
    /home/user/container-amazing_chandrasekhar.service
    /home/user/container-jolly_shtern.service
    $ cat pod-systemd-pod.service
    # pod-systemd-pod.service
    # autogenerated by Podman 1.5.2
    # Wed Aug 21 09:52:37 CEST 2019
    [Unit]
    Description=Podman pod-systemd-pod.service
    Documentation=man:podman-generate-systemd(1)
    Requires=container-amazing_chandrasekhar.service container-jolly_shtern.service
    Before=container-amazing_chandrasekhar.service container-jolly_shtern.service
    [Service]
    Restart=on-failure
    ExecStart=/usr/bin/podman start 77a818221650-infra
    ExecStop=/usr/bin/podman stop -t 10 77a818221650-infra
    KillMode=none
    Type=forking
    PIDFile=/run/user/1000/overlay-containers/ccfd5c71a088768774ca7bd05888d55cc287698dde06f475c8b02f696a25adcd/userdata/conmon.pid
    [Install]
    WantedBy=multi-user.target

SEE ALSO

podman(1), podman-container(1), systemctl(1), systemd.unit(5), systemd.service(5)

HISTORY

August 2019, Updated with pod support by Valentin Rothberg (rothberg at redhat dot com) April 2019, Originally compiled by Brent Baude (bbaude at redhat dot com)