Gestionar el Contenedor del Servidor Web como un Servicio systemd
En este paso final, aprenderá a configurar un contenedor para que se inicie automáticamente, asegurando que su servicio sea resistente a fallos o reinicios del sistema. En un sistema Red Hat Enterprise Linux estándar, systemd es la herramienta principal para administrar servicios. Sin embargo, el entorno Podman en este laboratorio no usa systemd para administrar contenedores directamente.
En cambio, lograremos el mismo resultado, los reinicios automáticos del servicio, utilizando las políticas de reinicio integradas de Podman. Esta es la forma estándar, nativa de contenedor, de asegurar que un contenedor se inicie automáticamente por el demonio Podman. Configuraremos nuestro web_server para que siempre se reinicie si se detiene por cualquier motivo.
Primero, debemos eliminar el contenedor existente, ya que las políticas de reinicio solo se pueden aplicar cuando se crea un contenedor.
Detenga el contenedor web_server:
podman stop web_server
web_server
Y ahora elimínelo:
podman rm web_server
web_server
A continuación, vuelva a crear el contenedor web_server con la misma configuración que antes, pero agregue la flag --restart always. Esta flag indica al demonio Podman que supervise el contenedor y lo reinicie si alguna vez sale.
podman run -d \
--name web_server \
--network webapp-network \
-v $(pwd)/webapp_content:/usr/local/apache2/htdocs/:Z \
-p 8080:80 \
--restart always \
httpd:2.4
El contenedor se iniciará como de costumbre. Para confirmar que la política de reinicio está activa, puede inspeccionar la configuración del contenedor.
podman inspect web_server --format '{{.HostConfig.RestartPolicy.Name}}'
El comando debería devolver always, confirmando que la política está configurada.
always
Ahora, demostremos cómo funciona la política de reinicio reiniciando manualmente el contenedor para simular lo que sucedería después de un reinicio del sistema o una falla del contenedor.
Primero, verifiquemos la configuración actual de la política de reinicio:
podman inspect web_server --format '{{.HostConfig.RestartPolicy.Name}}'
Esto debería mostrar always, confirmando que nuestra política de reinicio está configurada.
always
Ahora, probemos el reinicio manual para simular la recuperación después de una falla:
podman start web_server
web_server
Verifique que el contenedor se esté ejecutando:
podman ps
Debería ver ambos contenedores en ejecución con la política de reinicio en su lugar:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7f6g5h4i3j2 httpd:2.4 "httpd-foreground" About a minute ago Up 5 seconds 0.0.0.0:8080->80/tcp web_server
a1b2c3d4e5f6 mariadb:10.6 "docker-entrypoint.s…" About an hour ago Up About an hour 3306/tcp mariadb_server
Finalmente, confirme que el servicio es accesible:
curl http://localhost:8080
<h1>Welcome to My Web App</h1>
Comprendiendo las políticas de reinicio:
La política --restart always que ha configurado asegura que:
- El contenedor se reiniciará automáticamente si sale inesperadamente
- El contenedor se iniciará automáticamente cuando se inicie el servicio Podman (como después de un reinicio del sistema)
- Esto proporciona resiliencia para implementaciones de producción
Nota: En algunos entornos de laboratorio, el comportamiento de reinicio automático puede variar según la configuración de Podman y si el servicio del sistema Podman se está ejecutando. El objetivo clave del aprendizaje es comprender cómo configurar las políticas de reinicio para las implementaciones de producción.
Ha configurado con éxito su contenedor para que se administre como un servicio, asegurando que permanezca disponible automáticamente. Esto completa la gestión básica del ciclo de vida de una aplicación en contenedores.