Introdução
Um serviço de aplicação conteinerizada possui várias camadas: a unidade do systemd, o comando wrapper, a referência da imagem, o runtime do contêiner e a saída da aplicação. Uma tag de imagem incorreta pode fazer com que o serviço falhe antes mesmo de a aplicação iniciar.
Neste laboratório, o rhce-container-app.service utiliza o Podman para executar um contêiner UBI 10 minimal. A imagem correta já foi baixada, mas o arquivo de ambiente do serviço aponta para uma tag inexistente. Você irá diagnosticar a falha, corrigir a tag da imagem, reiniciar o serviço e verificar o contêiner em execução.
Confirmar a Falha do Serviço de Contêiner
Nesta etapa, você inspecionará a unidade do systemd que falhou antes de alterar a configuração do contêiner.
Entre no diretório do projeto e crie um espaço de trabalho.
cd /home/labex/project
mkdir -p container-service
Verifique o estado do serviço.
systemctl is-failed rhce-container-app.service || true
Salve as propriedades selecionadas do serviço.
systemctl show rhce-container-app.service -p ActiveState -p Result -p ExecMainStatus | tee container-service/service-state.txt
Leia os logs recentes do serviço.
sudo journalctl -u rhce-container-app.service -n 20 --no-pager
O serviço falha antes que a aplicação crie seu arquivo de prontidão (ready file).
Inspecionar Imagens e o Arquivo de Ambiente
Nesta etapa, você comparará a imagem disponível localmente com a tag de imagem utilizada pelo serviço.
Liste as imagens locais.
sudo podman images | tee container-service/images.txt
Leia o arquivo de ambiente do serviço.
sudo cat /etc/rhce-container/app.env | tee container-service/env-before.txt
Exiba o comando wrapper.
sudo sed -n '1,16p' /usr/local/bin/rhce-container-run
A tag da imagem local é latest, mas o serviço aponta para missing.
Reparar a Tag da Imagem
Nesta etapa, você atualizará apenas o arquivo de ambiente do serviço para que ele utilize a tag da imagem baixada.
Substitua a tag incorreta.
sudo sed -i 's/:missing/:latest/' /etc/rhce-container/app.env
Salve o ambiente reparado.
sudo cat /etc/rhce-container/app.env | tee container-service/env-after.txt
O serviço agora aponta para a imagem que existe localmente.
Reiniciar o Serviço de Contêiner
Nesta etapa, você limpará o estado de falha e reiniciará o contêiner gerenciado pelo systemd.
Redefina o estado de falha.
sudo systemctl reset-failed rhce-container-app.service
Reinicie o serviço.
sudo systemctl restart rhce-container-app.service
Salve o estado ativo.
systemctl is-active rhce-container-app.service | tee container-service/service-final.txt
O serviço agora deve permanecer ativo, pois o Podman pode utilizar a imagem corrigida.
Verificar o Contêiner em Execução
Nesta etapa, você verificará o Podman e o arquivo de prontidão da aplicação.
Liste o contêiner em execução.
sudo podman ps --filter name=rhce-container-app --format "{{.Names}} {{.Status}}" | tee container-service/container-state.txt
Leia o arquivo de prontidão criado pelo contêiner.
cat /srv/rhce-container/ready.txt | tee container-service/ready.txt
O serviço conteinerizado está em execução e produziu a saída esperada.
Resumo
Você diagnosticou uma falha em um serviço Podman gerenciado pelo systemd, comparou a imagem disponível com a tag de imagem configurada, reparou o arquivo de ambiente, reiniciou o serviço e verificou o contêiner em execução e o arquivo de prontidão da aplicação.



