Introduction
Un service d'application conteneurisé comporte plusieurs couches : l'unité systemd, la commande wrapper, la référence de l'image, le runtime du conteneur et la sortie de l'application. Une balise d'image incorrecte peut entraîner l'échec du service avant même que l'application ne démarre.
Dans ce laboratoire, rhce-container-app.service utilise Podman pour exécuter un conteneur minimal UBI 10. L'image correcte est déjà téléchargée, mais le fichier d'environnement du service pointe vers une balise erronée. Vous allez diagnostiquer la défaillance, corriger la balise de l'image, redémarrer le service et vérifier que le conteneur fonctionne correctement.
Confirmer la défaillance du service de conteneur
Dans cette étape, vous allez inspecter l'unité systemd défaillante avant de modifier la configuration du conteneur.
Accédez au répertoire du projet et créez un espace de travail.
cd /home/labex/project
mkdir -p container-service
Vérifiez l'état du service.
systemctl is-failed rhce-container-app.service || true
Enregistrez les propriétés sélectionnées du service.
systemctl show rhce-container-app.service -p ActiveState -p Result -p ExecMainStatus | tee container-service/service-state.txt
Lisez les journaux récents du service.
sudo journalctl -u rhce-container-app.service -n 20 --no-pager
Le service échoue avant que l'application ne puisse créer son fichier de disponibilité.
Inspecter les images et le fichier d'environnement
Dans cette étape, vous allez comparer l'image disponible localement avec la balise d'image utilisée par le service.
Listez les images locales.
sudo podman images | tee container-service/images.txt
Lisez le fichier d'environnement du service.
sudo cat /etc/rhce-container/app.env | tee container-service/env-before.txt
Affichez la commande wrapper.
sudo sed -n '1,16p' /usr/local/bin/rhce-container-run
La balise de l'image locale est latest, mais le service pointe vers missing.
Réparer la balise de l'image
Dans cette étape, vous allez mettre à jour uniquement le fichier d'environnement du service afin qu'il utilise la balise de l'image téléchargée.
Remplacez la balise incorrecte.
sudo sed -i 's/:missing/:latest/' /etc/rhce-container/app.env
Enregistrez l'environnement réparé.
sudo cat /etc/rhce-container/app.env | tee container-service/env-after.txt
Le service pointe désormais vers l'image présente localement.
Redémarrer le service de conteneur
Dans cette étape, vous allez réinitialiser l'état d'échec et redémarrer le conteneur géré par systemd.
Réinitialisez l'état d'échec.
sudo systemctl reset-failed rhce-container-app.service
Redémarrez le service.
sudo systemctl restart rhce-container-app.service
Enregistrez l'état actif.
systemctl is-active rhce-container-app.service | tee container-service/service-final.txt
Le service devrait maintenant rester actif car Podman peut utiliser l'image corrigée.
Vérifier le conteneur en cours d'exécution
Dans cette étape, vous allez vérifier Podman et le fichier de disponibilité de l'application.
Listez le conteneur en cours d'exécution.
sudo podman ps --filter name=rhce-container-app --format "{{.Names}} {{.Status}}" | tee container-service/container-state.txt
Lisez le fichier de disponibilité créé par le conteneur.
cat /srv/rhce-container/ready.txt | tee container-service/ready.txt
Le service conteneurisé est en cours d'exécution et a produit la sortie attendue.
Résumé
Vous avez diagnostiqué un service Podman géré par systemd en échec, comparé l'image disponible avec la balise d'image configurée, réparé le fichier d'environnement, redémarré le service et vérifié le conteneur en cours d'exécution ainsi que le fichier de disponibilité de l'application.



