Asignar Almacenamiento Persistente a un Contenedor

Red Hat Enterprise LinuxBeginner
Practicar Ahora

Introducción

En este desafío, utilizarás podman para vincular almacenamiento persistente a un contenedor. Por naturaleza, los contenedores son efímeros, lo que significa que cualquier dato generado en su interior se pierde al eliminarlos. Para conservar la información, puedes montar un directorio del sistema anfitrión dentro del contenedor. Este directorio montado se conoce como volumen persistente, lo que garantiza que tus archivos sobrevivan incluso si el contenedor se detiene, se borra o se vuelve a crear.

Asignar Almacenamiento Persistente a un Contenedor

En esta práctica, crearás un directorio en el sistema local que funcionará como volumen persistente. Posteriormente, iniciarás un nuevo contenedor vinculando dicho volumen. Finalmente, comprobarás que los datos escritos en el volumen desde el interior del contenedor permanecen intactos tras reiniciar el servicio.

Tareas

  • Crear un directorio en el sistema anfitrión para que actúe como volumen persistente.
  • Ejecutar un nuevo contenedor vinculándole el volumen persistente.
  • Verificar que los datos escritos en el volumen desde el contenedor persisten después de reiniciar el contenedor.

Requisitos

  • Crea un directorio llamado /data en el sistema anfitrión. Este se utilizará como la ruta de origen para el montaje del volumen.
  • Ejecuta un contenedor utilizando la imagen nginx. El contenedor debe llamarse my-nginx-container.
  • Monta el directorio anfitrión /data en la ruta /usr/share/nginx/html dentro del contenedor.
  • Dentro del contenedor en ejecución, crea un archivo en /usr/share/nginx/html/my-file.txt con el contenido exacto: This is a persistent file.

Ejemplo

Tras completar las tareas, deberías ser capaz de visualizar tu archivo personalizado junto con los archivos predeterminados de Nginx dentro del directorio montado del contenedor. También puedes revisar el directorio /data en el anfitrión para ver los mismos archivos.

[labex@host ~]$ podman exec my-nginx-container cat /usr/share/nginx/html/my-file.txt
This is a persistent file
[labex@host ~]$ podman exec my-nginx-container ls /usr/share/nginx/html
my-file.txt

Consejos

  • Utiliza el comando sudo mkdir para crear el directorio /data.
  • Es posible que necesites ajustar el propietario con sudo chown y los permisos con sudo chmod para asegurar que el proceso del contenedor tenga permisos de escritura.
  • El parámetro -v o --volume en el comando podman run se utiliza para montar directorios. El formato es -v /ruta/anfitrion:/ruta/contenedor.
  • En sistemas con SELinux habilitado (como RHEL), debes configurar el contexto de SELinux adecuado para el directorio del anfitrión. Utiliza sudo semanage fcontext -a -t container_file_t "/data(/.*)?" y sudo restorecon -R /data para gestionar las etiquetas de seguridad.
  • Si experimentas errores de permisos, intenta cambiar el propietario del directorio para que coincida con el ID de usuario del contenedor (normalmente 1000:1000 para nginx).
✨ Revisar Solución y Practicar

Resumen

En este desafío, has aprendido a proporcionar almacenamiento persistente a un contenedor mediante un montaje vinculado (bind mount). Al conectar un directorio del sistema anfitrión con el contenedor, garantizas que la información generada por tu aplicación permanezca disponible incluso si el contenedor se detiene, se elimina o se reinicia. Esta técnica es fundamental para ejecutar aplicaciones con estado (stateful) en entornos de contenedores.