6. Volúmenes y persistencia de datos

En Docker, los datos almacenados en un contenedor se eliminan al detener o eliminar ese contenedor, salvo que se usen mecanismos de persistencia. Para evitar perder información valiosa (por ejemplo, bases de datos, archivos de configuración, etc.), Docker proporciona volúmenes y también permite montar carpetas locales del host.


¿Qué es un volumen?

Un volumen es un mecanismo de almacenamiento persistente gestionado por Docker. Se encuentra fuera del sistema de archivos del contenedor y se almacena en el host (por defecto en /var/lib/docker/volumes/).

Crear volumen manualmente

docker volume create datos_postgres

Usarlo en un contenedor

docker run -v datos_postgres:/var/lib/postgresql/data postgres

Volúmenes en Docker Compose

services:
  db:
    image: postgres
    volumes:
      - datos_db:/var/lib/postgresql/data

volumes:
  datos_db:

Los volúmenes declarados abajo (volumes:) son gestionados por Docker y pueden ser reutilizados por múltiples contenedores.


Carpetas del host: alternativa accesible

Una alternativa muy útil (especialmente en desarrollo) es montar una carpeta del host directamente en el contenedor:

volumes:
  - ./mi-carpeta:/app/datos

Esto tiene varias ventajas:

Sin embargo:


Ver y gestionar volúmenes

docker volume ls
docker volume inspect nombre_del_volumen
docker volume rm nombre_del_volumen

También se pueden eliminar automáticamente con:

docker compose down -v

Comparación rápida

Método Persistencia Visible en host Ideal para
Volumen de Docker No directamente Producción, bases de datos
Carpeta del sistema Desarrollo, edición directa

Buenas prácticas


07 Redes y comunicación entre contenedores