Einführung
Ein containerisierter Anwendungsdienst besteht aus mehreren Ebenen: der systemd-Unit, dem Wrapper-Befehl, der Image-Referenz, der Container-Runtime und der Anwendungsausgabe. Ein fehlerhafter Image-Tag kann dazu führen, dass der Dienst fehlschlägt, noch bevor die Anwendung startet.
In diesem Lab verwendet rhce-container-app.service Podman, um einen UBI 10 Minimal-Container auszuführen. Das korrekte Image wurde bereits heruntergeladen, aber die Umgebungsdatei des Dienstes verweist auf einen fehlerhaften Tag. Sie werden den Fehler diagnostizieren, den Image-Tag reparieren, den Dienst neu starten und den laufenden Container überprüfen.
Den Fehler des Container-Dienstes bestätigen
In diesem Schritt untersuchen Sie die fehlerhafte systemd-Unit, bevor Sie die Container-Konfiguration ändern.
Wechseln Sie in das Projektverzeichnis und erstellen Sie einen Arbeitsbereich.
cd /home/labex/project
mkdir -p container-service
Überprüfen Sie den Status des Dienstes.
systemctl is-failed rhce-container-app.service || true
Speichern Sie ausgewählte Dienst-Eigenschaften.
systemctl show rhce-container-app.service -p ActiveState -p Result -p ExecMainStatus | tee container-service/service-state.txt
Lesen Sie die aktuellen Dienstprotokolle.
sudo journalctl -u rhce-container-app.service -n 20 --no-pager
Der Dienst schlägt fehl, bevor die Anwendung ihre Bereitstellungsdatei (Ready-File) erstellen kann.
Images und die Umgebungsdatei untersuchen
In diesem Schritt vergleichen Sie das lokal verfügbare Image mit dem vom Dienst verwendeten Image-Tag.
Listen Sie die lokalen Images auf.
sudo podman images | tee container-service/images.txt
Lesen Sie die Umgebungsdatei des Dienstes.
sudo cat /etc/rhce-container/app.env | tee container-service/env-before.txt
Zeigen Sie den Wrapper-Befehl an.
sudo sed -n '1,16p' /usr/local/bin/rhce-container-run
Der lokale Image-Tag ist latest, aber der Dienst verweist auf missing.
Den Image-Tag reparieren
In diesem Schritt aktualisieren Sie nur die Umgebungsdatei des Dienstes, damit sie den heruntergeladenen Image-Tag verwendet.
Ersetzen Sie den fehlerhaften Tag.
sudo sed -i 's/:missing/:latest/' /etc/rhce-container/app.env
Speichern Sie die reparierte Umgebung.
sudo cat /etc/rhce-container/app.env | tee container-service/env-after.txt
Der Dienst verweist nun auf das Image, das lokal vorhanden ist.
Den Container-Dienst neu starten
In diesem Schritt setzen Sie den Fehlerstatus zurück und starten den von systemd verwalteten Container neu.
Setzen Sie den Fehlerstatus zurück.
sudo systemctl reset-failed rhce-container-app.service
Starten Sie den Dienst neu.
sudo systemctl restart rhce-container-app.service
Speichern Sie den aktiven Status.
systemctl is-active rhce-container-app.service | tee container-service/service-final.txt
Der Dienst sollte nun aktiv bleiben, da Podman das korrigierte Image verwenden kann.
Den laufenden Container überprüfen
In diesem Schritt überprüfen Sie Podman und die Bereitstellungsdatei der Anwendung.
Listen Sie den laufenden Container auf.
sudo podman ps --filter name=rhce-container-app --format "{{.Names}} {{.Status}}" | tee container-service/container-state.txt
Lesen Sie die vom Container erstellte Bereitstellungsdatei.
cat /srv/rhce-container/ready.txt | tee container-service/ready.txt
Der containerisierte Dienst läuft und hat die erwartete Ausgabe erzeugt.
Zusammenfassung
Sie haben einen fehlerhaften, von systemd verwalteten Podman-Dienst diagnostiziert, das verfügbare Image mit dem konfigurierten Image-Tag verglichen, die Umgebungsdatei repariert, den Dienst neu gestartet und den laufenden Container sowie die Bereitstellungsdatei der Anwendung überprüft.



