Introducción
Un servicio de aplicación en contenedor consta de varias capas: la unidad de systemd, el comando envoltorio (wrapper), la referencia a la imagen, el tiempo de ejecución del contenedor y la salida de la aplicación. Una etiqueta de imagen incorrecta puede provocar que el servicio falle antes de que la aplicación se inicie.
En este laboratorio, rhce-container-app.service utiliza Podman para ejecutar un contenedor UBI 10 minimal. La imagen correcta ya ha sido descargada, pero el archivo de entorno del servicio apunta a una etiqueta inexistente. Usted diagnosticará el fallo, reparará la etiqueta de la imagen, reiniciará el servicio y verificará el contenedor en ejecución.
Confirmar el fallo del servicio de contenedor
En este paso, inspeccionará la unidad de systemd fallida antes de modificar la configuración del contenedor.
Acceda al directorio del proyecto y cree un espacio de trabajo.
cd /home/labex/project
mkdir -p container-service
Compruebe el estado del servicio.
systemctl is-failed rhce-container-app.service || true
Guarde las propiedades seleccionadas del servicio.
systemctl show rhce-container-app.service -p ActiveState -p Result -p ExecMainStatus | tee container-service/service-state.txt
Lea los registros recientes del servicio.
sudo journalctl -u rhce-container-app.service -n 20 --no-pager
El servicio falla antes de que la aplicación cree su archivo de preparación (ready file).
Inspeccionar las imágenes y el archivo de entorno
En este paso, comparará la imagen disponible localmente con la etiqueta de imagen utilizada por el servicio.
Enumere las imágenes locales.
sudo podman images | tee container-service/images.txt
Lea el archivo de entorno del servicio.
sudo cat /etc/rhce-container/app.env | tee container-service/env-before.txt
Muestre el comando envoltorio.
sudo sed -n '1,16p' /usr/local/bin/rhce-container-run
La etiqueta de la imagen local es latest, pero el servicio apunta a missing.
Reparar la etiqueta de la imagen
En este paso, actualizará únicamente el archivo de entorno del servicio para que utilice la etiqueta de la imagen descargada.
Reemplace la etiqueta incorrecta.
sudo sed -i 's/:missing/:latest/' /etc/rhce-container/app.env
Guarde el entorno reparado.
sudo cat /etc/rhce-container/app.env | tee container-service/env-after.txt
El servicio ahora apunta a la imagen que existe localmente.
Reiniciar el servicio de contenedor
En este paso, borrará el estado de fallo y reiniciará el contenedor gestionado por systemd.
Restablezca el estado de fallo.
sudo systemctl reset-failed rhce-container-app.service
Reinicie el servicio.
sudo systemctl restart rhce-container-app.service
Guarde el estado activo.
systemctl is-active rhce-container-app.service | tee container-service/service-final.txt
El servicio debería permanecer activo ahora, ya que Podman puede utilizar la imagen corregida.
Verificar el contenedor en ejecución
En este paso, comprobará Podman y el archivo de preparación de la aplicación.
Enumere el contenedor en ejecución.
sudo podman ps --filter name=rhce-container-app --format "{{.Names}} {{.Status}}" | tee container-service/container-state.txt
Lea el archivo de preparación creado por el contenedor.
cat /srv/rhce-container/ready.txt | tee container-service/ready.txt
El servicio en contenedor está ejecutándose y ha producido la salida esperada.
Resumen
Usted diagnosticó un servicio de Podman gestionado por systemd que fallaba, comparó la imagen disponible con la etiqueta de imagen configurada, reparó el archivo de entorno, reinició el servicio y verificó el contenedor en ejecución y el archivo de preparación de la aplicación.



