Volver a Docker

Publicacion 02

Volumenes para bases de datos

Una introduccion practica a los volumenes Docker para servicios con estado, enfocada en persistir datos de base de datos fuera del ciclo de vida del contenedor.

6 min

Volumenes para bases de datos

Por que importan los volumenes

  • Los archivos de la base de datos deben sobrevivir reinicios y recreacion del contenedor.
  • El almacenamiento persistente no deberia depender de la vida de un contenedor individual.
  • Los volumenes vuelven el desarrollo local y la recuperacion mas predecibles.
  • Manejar datos asi es mas limpio que guardarlos en la capa writable del contenedor.

Crear e inspeccionar un volumen

El flujo basico empieza creando un volumen con nombre e inspeccionandolo.

`docker volume inspect` muestra donde guarda Docker los datos del volumen y como esta configurado en el host.

docker volume create --name storage_test
docker volume ls
docker volume inspect storage_test

Eliminar un volumen

Los volumenes que no estan en uso pueden eliminarse de forma explicita.

Nota importante

No puedes eliminar un volumen que este conectado a un contenedor en ejecucion.

docker volume rm storage_test

Ejecutar MySQL con almacenamiento persistente

Una vez creado el volumen, montalo dentro del contenedor para que MySQL escriba los datos fuera de la capa interna del contenedor.

docker volume create --name storagedb

docker run --name mysql-01 \
  -v storagedb:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -d mysql:latest

Cargar un script SQL en el contenedor

Si necesitas inicializar datos o esquemas, puedes ejecutar SQL contra la base que ya corre dentro del contenedor.

docker exec -i mysql-01 \
  sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < ./mysql/databases.sql

Que ensena este ejercicio

  • Los volumenes de Docker preservan estado mas alla de la vida de un contenedor.
  • Los volumenes con nombre son mas faciles de reutilizar y razonar que el almacenamiento anonimo.
  • Las bases de datos deberian montar almacenamiento explicito desde el inicio.
  • La inicializacion de datos puede seguir pasando por flujos normales de contenedor.

Siguiente paso recomendado

Despues de que este montaje basico funcione, la siguiente comparacion util es entre named volumes y bind mounts. Esa diferencia importa cuando pasas de practica local a backup, inspeccion y estrategias de almacenamiento por entorno.

Siguiente lectura

Cluster Docker Swarm de 3 nodos

Configuracion de un cluster distribuido para entender nodos, coordinacion de servicios y operacion de workloads.

Ir a la siguiente publicacion