Volúmenes en Docker: cómo no perder los datos al borrar un contenedor

Publicado por reacofertas
hace 23 horas

Hola a todos. Siguiendo con la mini-serie de Docker de estos días (comandos básicos y Compose), hoy toca un tema que me dio algún susto al principio: los volúmenes.

El problema: los datos que escribe un contenedor viven dentro del contenedor. Si lo borras (docker rm) o lo recreas al actualizar la imagen, esos datos desaparecen. Me pasó con una base de datos de pruebas y desde entonces lo primero que miro al montar cualquier servicio es dónde guarda sus datos.

La solución son los volúmenes:

  • Volúmenes nombrados: los gestiona Docker (docker volume create misdatos) y se montan con -v misdatos:/ruta/en/el/contenedor. Es la opción recomendada para bases de datos y datos de aplicación.
  • Bind mounts: montas una carpeta de tu máquina directamente (-v /home/usuario/datos:/ruta/en/el/contenedor). Útil para desarrollo, cuando quieres editar archivos desde el host.
  • tmpfs: vive en memoria y se pierde al parar. Solo para datos temporales o sensibles.

Lo que más me lió al principio:

  • Si montas una carpeta vacía del host sobre una ruta que ya tiene datos en la imagen, la carpeta vacía tapa los datos originales.
  • En Compose se declaran en la sección volumes: del servicio y hay que listar los nombrados también al final del archivo.
  • docker volume ls y docker volume inspect para ver qué tienes ocupando espacio (docker system df también ayuda).

Lo expliqué con ejemplos completos (compose incluido) en mi blog: https://cursodocker.blogspot.com/2026/10/como-funcionan-los-volumenes-en-docker.html (es mi blog, lo aviso por transparencia).

¿Vosotros usáis volúmenes nombrados o bind mounts para las bases de datos en desarrollo?

docker