Serie Docker: Episodio 19 — Volúmenes y Almacenamiento Persistente
En episodios anteriores vimos Docker Compose, redes y Swarm. En este episodio abordamos uno de los aspectos más críticos de las aplicaciones containerizadas: el almacenamiento persistente y por qué importa para mantener datos entre reinicios y despliegues.
Por qué el almacenamiento persistente importa
Por defecto los contenedores Docker son efímeros, cualquier dato almacenado dentro de un contenedor se pierde cuando el contenedor se elimina. Para conservar información entre reinicios o actualizaciones de contenedores necesitamos volúmenes o bind mounts.
Tipos de almacenamiento en Docker
Volúmenes gestionados por Docker - almacenados en la ruta del host /var/lib/docker/volumes/, pueden compartirse entre contenedores y son ideales para bases de datos y datos persistentes de la aplicación.
Bind mounts - usan un directorio del sistema host, ofrecen control total sobre los archivos y son muy útiles en entornos de desarrollo.
Tmpfs mounts - almacenados únicamente en memoria, perfectos para caché y datos temporales que no deben persistir en disco.
Crear y usar volúmenes
Ejemplo de comandos básicos para gestionar volúmenes y contenedores
Crear un volumen: docker volume create my_data
Ejecutar un contenedor usando el volumen: docker run -d -v my_data:/app/data my_app
El volumen my_data persiste aunque el contenedor my_app sea eliminado.
Ejemplo de bind mount: docker run -d -v /ruta/host:/ruta/contenedor my_app. Los cambios en la ruta del host se reflejan inmediatamente dentro del contenedor.
Ejemplo en Docker Compose versión 3:
version: 3
services:
db:
image: postgres:latest
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Con esta configuración los datos sobreviven a reinicios de contenedores y a docker-compose down.
Buenas prácticas
Usar volúmenes con nombre para datos de producción. Realizar backups periódicos de los volúmenes. Evitar almacenar credenciales sensibles directamente en volúmenes; usar mecanismos de secretos. Emplear montajes en modo solo lectura cuando sea posible para mejorar la seguridad.
Desafío práctico
Crear un contenedor PostgreSQL con un volumen nombrado. Insertar datos. Detener y eliminar el contenedor. Levantar un nuevo contenedor conectado al mismo volumen y verificar que los datos persisten.
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones empresariales, inteligencia artificial, ciberseguridad y servicios cloud. Si necesita soluciones de software a medida visite Desarrollo de aplicaciones y software a medida y para migraciones o despliegues en la nube contamos con experiencia en servicios cloud aws y azure en Servicios cloud AWS y Azure. También ofrecemos servicios de inteligencia de negocio, implementaciones power bi, agentes IA y soluciones de ia para empresas, así como auditorías y pruebas de ciberseguridad para proteger sus datos.
Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.
Próximo episodio: Episodio 20 — Buenas prácticas de seguridad en Docker y gestión de secretos.