8.3. Generación automática de un archivo de unidad systemd usando Podman


Por defecto, Podman genera un archivo de unidad para los contenedores o pods existentes. Puede generar archivos de unidad systemd más portables utilizando la opción podman generate systemd --new. La bandera --new indica a Podman que genere archivos de unidad que creen, inicien y eliminen contenedores.

Procedimiento

  1. Extraiga la imagen que desea utilizar en su sistema. Por ejemplo, para extraer la imagen busybox:

    # podman pull busybox:latest
  2. Enumera todas las imágenes disponibles en tu sistema:

    # podman images
    REPOSITORY                 TAG     IMAGE ID      CREATED      SIZE
    docker.io/library/busybox  latest  c7c37e472d31  3 weeks ago  1.45 MB
  3. Cree el contenedor busybox:

    # podman create --name busybox busybox:latest
    1e12cf95e305435c0001fa7d4a14cf1d52f737c1118328937028c0bd2fdec5ca
  4. Para verificar que el contenedor ha sido creado, liste todos los contenedores:

    # podman ps -a
    CONTAINER ID  IMAGE                             COMMAND  CREATED        STATUS   PORTS   NAMES
    1e12cf95e305  docker.io/library/busybox:latest  sh       7 seconds ago  Created          busybox
  5. Generar un archivo de unidad systemd para el contenedor busybox:

    # podman generate systemd --new --files --name busybox
    /root/container-busybox.service
  6. Muestra el contenido del archivo de la unidad systemd generado en container-busybox.service:

    # vim container-busybox.services
    
    # container-busybox.service
    # autogenerated by Podman 2.0.0-rc7
    # Mon Jul 27 11:06:32 CEST 2020
    
    [Unit]
    Description=Podman container-busybox.service
    Documentation=man:podman-generate-systemd(1)
    Wants=network.target
    After=network-online.target
    
    [Service]
    Environment=PODMAN_SYSTEMD_UNIT=%n
    Restart=on-failure
    ExecStartPre=/usr/bin/rm -f %t/container-busybox.pid %t/container-busybox.ctr-id
    ExecStart=/usr/bin/podman run --conmon-pidfile %t/container-busybox.pid --cidfile %t/container-busybox.ctr-id --cgroups=no-conmon -d --replace --name busybox busybox:latest
    ExecStop=/usr/bin/podman stop --ignore --cidfile %t/container-busybox.ctr-id -t 10
    ExecStopPost=/usr/bin/podman rm --ignore -f --cidfile %t/container-busybox.ctr-id
    PIDFile=%t/container-busybox.pid
    KillMode=none
    Type=forking
    
    [Install]
    WantedBy=multi-user.target default.target

    Tenga en cuenta que los archivos de unidad generados con la opción --new no esperan que existan contenedores y pods. Por lo tanto, ejecutan el comando podman run al iniciar el servicio (ver la línea ExecStart ) en lugar del comando podman start. Por ejemplo, vea la Sección 7.2. Generación de un archivo de unidad systemd usando Podman.

    • El comando podman run utiliza las siguientes opciones de línea de comandos:

      • La opción --conmon-pidfile apunta a una ruta para almacenar el ID del proceso conmon que se ejecuta en el host. El proceso conmon termina con el mismo estado de salida que el contenedor, lo que permite a systemd informar del estado correcto del servicio y reiniciar el contenedor si es necesario.
      • La opción --cidfile apunta a la ruta que almacena el ID del contenedor.
      • El %t es la ruta de acceso a la raíz del directorio en tiempo de ejecución, por ejemplo /run/user/$UserID.
      • El %n es el nombre completo del servicio.
  7. Copie los archivos de la unidad en /usr/lib/systemd/system para instalarlos como usuario root:

    # cp -Z container-busybox.service  /usr/lib/systemd/system
    Created symlink /etc/systemd/system/multi-user.target.wants/container-busybox.service /usr/lib/systemd/system/container-busybox.service.
    Created symlink /etc/systemd/system/default.target.wants/container-busybox.service  /usr/lib/systemd/system/container-busybox.service.

Recursos adicionales

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.