Red Hat Training

A Red Hat training course is available for RHEL 8

8.2. Generación de un archivo de unidad systemd usando Podman

Podman permite a systemd controlar y gestionar los procesos de los contenedores. Puede generar un archivo de unidad systemd para los contenedores y pods existentes utilizando el comando podman generate systemd. Se recomienda utilizar podman generate systemd porque los archivos de unidades generados cambian con frecuencia (a través de las actualizaciones de Podman) y el podman generate systemd asegura que se obtiene la última versión de los archivos de unidades.

Procedimiento

  1. Cree un contenedor (por ejemplo myubi):

    $ podman create -d --name myubi registry.access.redhat.com/ubi8:latest top
    0280afe98bb75a5c5e713b28de4b7c5cb49f156f1cce4a208f13fee2f75cb453
  2. Utilice el nombre o el ID del contenedor para generar el archivo de unidad systemd y dirigirlo al archivo ~/.config/systemd/user/container-myubi.service:

    $ podman generate systemd --name myubi > ~/.config/systemd/user/container-myubi.service

Pasos de verificación

  • Para mostrar el contenido del archivo de unidad systemd generado, introduzca:

    $ cat ~/.config/systemd/user/container-myubi.service
    # container-myubi.service
    # autogenerated by Podman 2.0.0
    # Tue Aug 11 10:51:04 CEST 2020
    
    [Unit]
    Description=Podman container-myubi.service
    Documentation=man:podman-generate-systemd(1)
    Wants=network.target
    After=network-online.target
    
    [Service]
    Environment=PODMAN_SYSTEMD_UNIT=%n
    Restart=on-failure
    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/0280afe98bb75a5c5e713b28de4b7c5cb49f156f1cce4a208f13fee2f75cb453/userdata/conmon.pid
    KillMode=none
    Type=forking
    
    [Install]
    WantedBy=multi-user.target default.target
    • La línea Restart=on-failure establece la política de reinicio e indica a systemd que se reinicie cuando el servicio no pueda iniciarse o detenerse limpiamente, o cuando el proceso salga de forma distinta a cero.
    • La línea ExecStart describe cómo iniciamos el contenedor.
    • La línea ExecStop describe cómo detenemos y retiramos el contenedor.

Recursos adicionales