Введение
Контейнеризированный сервис приложения состоит из нескольких уровней: unit-файл systemd, команда-обертка, ссылка на образ, среда выполнения контейнера и вывод приложения. Неверный тег образа может привести к сбою службы еще до запуска самого приложения.
В этой лабораторной работе сервис rhce-container-app.service использует Podman для запуска минимального контейнера UBI 10. Необходимый образ уже загружен, но файл окружения службы указывает на несуществующий тег. Вам предстоит диагностировать причину сбоя, исправить тег образа, перезапустить службу и проверить работу контейнера.
Подтверждение сбоя контейнерного сервиса
На этом этапе вы изучите состояние неисправного unit-файла systemd перед внесением изменений в конфигурацию контейнера.
Перейдите в каталог проекта и создайте рабочую область.
cd /home/labex/project
mkdir -p container-service
Проверьте состояние службы.
systemctl is-failed rhce-container-app.service || true
Сохраните выбранные свойства службы.
systemctl show rhce-container-app.service -p ActiveState -p Result -p ExecMainStatus | tee container-service/service-state.txt
Прочитайте последние записи в логах службы.
sudo journalctl -u rhce-container-app.service -n 20 --no-pager
Служба завершается с ошибкой до того, как приложение успевает создать файл готовности.
Проверка образов и файла окружения
На этом этапе вы сравните образы, доступные локально, с тегом образа, используемым службой.
Выведите список локальных образов.
sudo podman images | tee container-service/images.txt
Прочитайте файл окружения службы.
sudo cat /etc/rhce-container/app.env | tee container-service/env-before.txt
Посмотрите содержимое команды-обертки.
sudo sed -n '1,16p' /usr/local/bin/rhce-container-run
Локальный тег образа — latest, но служба ссылается на missing.
Исправление тега образа
На этом этапе вы обновите файл окружения службы, чтобы он использовал корректный тег загруженного образа.
Замените неверный тег.
sudo sed -i 's/:missing/:latest/' /etc/rhce-container/app.env
Сохраните исправленную конфигурацию окружения.
sudo cat /etc/rhce-container/app.env | tee container-service/env-after.txt
Теперь служба указывает на образ, который присутствует в локальном хранилище.
Перезапуск контейнерного сервиса
На этом этапе вы сбросите состояние ошибки и перезапустите контейнер под управлением systemd.
Сбросьте состояние сбоя.
sudo systemctl reset-failed rhce-container-app.service
Перезапустите службу.
sudo systemctl restart rhce-container-app.service
Сохраните текущее состояние службы.
systemctl is-active rhce-container-app.service | tee container-service/service-final.txt
Теперь служба должна оставаться активной, так как Podman может использовать исправленный образ.
Проверка работающего контейнера
На этом этапе вы проверите работу Podman и наличие файла готовности приложения.
Выведите список запущенных контейнеров.
sudo podman ps --filter name=rhce-container-app --format "{{.Names}} {{.Status}}" | tee container-service/container-state.txt
Прочитайте файл готовности, созданный контейнером.
cat /srv/rhce-container/ready.txt | tee container-service/ready.txt
Контейнеризированный сервис запущен и успешно выполнил свою задачу.
Резюме
Вы провели диагностику неисправного сервиса Podman под управлением systemd, сравнили доступный образ с настроенным тегом, исправили файл окружения, перезапустили службу и подтвердили корректную работу контейнера и приложения.



