Domina la persistencia de datos en Docker usando volúmenes. Con Docker Compose, un volumen bind impulsa la edición en vivo de un sitio con NGINX, mientras que los volúmenes nombrados conservan datos críticos de MySQL aun cuando el contenedor se detiene. Aquí verás el flujo, los comandos y las rutas clave para trabajar sin perder nada.
¿Cómo asegurar la persistencia de datos en Docker con volúmenes?
El reto típico: al apagar un contenedor, todo lo que estaba adentro se pierde. La solución directa son los volúmenes, que separan los datos del ciclo de vida del contenedor.
¿Qué problema resuelven los volúmenes en contenedores?
- Evitan la pérdida de datos al detener contenedores.
- Permiten compartir archivos entre host y contenedor.
- Habilitan flujos de trabajo ágiles sin reconstruir imágenes en cada cambio.
¿Cómo preparar el entorno con carpetas y archivos clave?
- Crear la carpeta de proyecto llamada Volúmenes. Se omite acento para evitar problemas en control de versiones.
- Dentro, crear la carpeta HTML y el archivo index.html como portada.
- Definir docker-compose.yml para orquestar tres servicios: un web con NGINX y dos con volúmenes nombrados.
¿Cómo levantar y validar servicios con Docker Compose?
- Ejecutar los servicios con comandos sencillos.
cd Volúmenes
docker compose up
docker volume ls
- El servicio web usa la imagen de NGINX, expone un puerto y enlaza HTML a la ruta /usr/share/nginx/html.
- Abrir localhost en el navegador: se muestra tu página de inicio personalizada.
¿Qué diferencia hay entre volúmenes bind y volúmenes nombrados?
Hay dos tipos: volumen bind y volumen nombrado. Ambos separan datos del contenedor, pero resuelven necesidades distintas.
¿Cómo funciona un volumen bind para desarrollo web con NGINX?
- Enlaza la carpeta HTML local con /usr/share/nginx/html en el contenedor.
- Cambios en index.html se reflejan al recargar el navegador.
- Beneficio clave: edición en vivo sin reconstruir la imagen en cada modificación.
¿Cómo usar volúmenes nombrados para datos de MySQL?
- Un servicio de MySQL apunta su almacenamiento a /var/lib/mysql con un volumen nombrado (por ejemplo, dbdata).
- Aunque el contenedor muera, las bases de datos permanecen gracias al volumen.
- Otro servicio puede usar un volumen nombrado adicional (por ejemplo, appdata) para su propio estado.
¿Qué beneficios prácticos aportan en el día a día?
- Mantener datos críticos sin sobresaltos.
- Probar cambios rápidamente en un sitio con NGINX.
- Separar código e infraestructura del estado de la aplicación.
¿Cómo inspeccionar y gestionar volúmenes en Docker Desktop y terminal?
Usa tanto la terminal como Docker Desktop para confirmar que los volúmenes existen y están en uso.
¿Cómo verificar volúmenes con docker volume ls?
- Ejecutar docker volume ls para listar volúmenes: verás appdata y dbdata creados por Docker Compose.
- Identificar cuáles están en uso por contenedores activos.
¿Cómo explorar archivos montados desde Docker Desktop?
- En Docker Desktop, abrir la sección Volúmenes: ver appdata y dbdata en uso.
- Navegar por contenedor y pestaña de files para confirmar rutas montadas.
- En el servicio de base de datos, comprobar /var/lib/mysql marcado como volumen.
¿Qué ocurre cuando detienes los contenedores?
- Al detener con Ctrl+C, los contenedores salen.
- Los volúmenes permanecen visibles en Docker Desktop y conservan su contenido.
- Ventaja: puedes reiniciar servicios sin perder la información guardada.
Habilidades y conceptos practicados:
- Configurar volúmenes bind y volúmenes nombrados en Docker Compose.
- Montar rutas clave: /usr/share/nginx/html para NGINX y /var/lib/mysql para MySQL.
- Validar estado con docker volume ls y explorar archivos desde Docker Desktop.
- Editar index.html local y ver cambios en localhost tras un refresh.
¿Quieres compartir cómo montas tus volúmenes o qué rutas usas para tus servicios? Deja tus dudas y experiencias en los comentarios.