Volúmenes en Docker: Qué son y cómo funcionan

Volúmenes en Docker: Qué son y cómo funcionan

¿Cómo funcionan los volúmenes en Docker?

Los volúmenes en Docker son una forma eficiente y flexible de manejar datos que necesitan persistir más allá del ciclo de vida de un contenedor. Para entender este concepto, vamos a desglosarlo en partes simples y usar analogías cotidianas.


¿Cómo funcionan los volúmenes en Docker?

Un volumen en Docker es como una unidad de almacenamiento externa que conectas a tus contenedores. Imagina que tienes una laptop y necesitas guardar algunos documentos importantes en una USB para que no se pierdan si la laptop se daña. Aquí, la USB sería el volumen, y tu laptop sería el contenedor.

En términos técnicos:

  • Los datos almacenados en volúmenes están separados del sistema de archivos del contenedor.
  • Esto permite que los datos persistan incluso si el contenedor es eliminado.
  • Los volúmenes pueden ser compartidos entre varios contenedores.

¿Por qué usar volúmenes?

Imagina que estás cocinando y usas una libreta para anotar recetas (los datos). Si cambias de cocina (contenedor) o remodelas tu cocina, no quieres que se pierdan tus recetas. Guardarlas en una libreta independiente (el volumen) asegura que puedes llevarlas contigo y usarlas donde sea.

Ventajas técnicas:

  1. Persistencia: Los datos sobreviven aunque el contenedor sea eliminado.
  2. Independencia del sistema de archivos del host: Docker maneja los volúmenes sin depender directamente del sistema operativo subyacente.
  3. Portabilidad y facilidad de uso: Puedes compartir datos fácilmente entre contenedores.
  4. Seguridad: Puedes configurar permisos para controlar quién puede acceder al volumen.

Tipos de almacenamiento de datos en Docker

Docker ofrece tres métodos principales para manejar datos:

  1. Volumes (Volúmenes):
    • Administrados directamente por Docker.
    • Almacenados en /var/lib/docker/volumes/ en el host.
    • Los más recomendados para la mayoría de los casos.
  2. Bind Mounts (Montajes ligados):
    • Conectas un directorio específico del sistema operativo del host al contenedor.
    • Más flexibles, pero más propensos a errores porque dependen del sistema de archivos del host.
  3. tmpfs (almacenamiento temporal en memoria):
    • Los datos solo se guardan en la RAM y se pierden cuando el contenedor se detiene.

Cómo trabajar con volúmenes

1. Crear un volumen

Docker te permite crear volúmenes explícitamente. Es como formatear una nueva USB.

docker volume create mi_volumen
Esto crea un volumen llamado mi_volumen.

2. Conectar un volumen a un contenedor

Cuando creas o ejecutas un contenedor, puedes asociarle un volumen.

docker run -d --name mi_contenedor -v mi_volumen:/datos nginx

Aquí:

  • mi_volumen es el nombre del volumen que conectas.
  • /datos es la carpeta dentro del contenedor donde el volumen estará disponible.

Es como decir: «Conecta esta USB (mi_volumen) al escritorio de la cocina (la carpeta /datos en el contenedor)».

3. Listar volúmenes

Puedes ver todos los volúmenes disponibles con:

docker volume ls

4. Inspeccionar un volumen

Para ver detalles de un volumen, como dónde está almacenado en el host:

docker volume inspect mi_volumen

5. Eliminar un volumen

Si ya no necesitas un volumen, puedes eliminarlo (cuidado, se perderán los datos).

docker volume rm mi_volumen

Ejemplo práctico

Crea un volumen llamado datos_app:

docker volume create datos_app

Ejecuta un contenedor de MySQL, conectando el volumen

docker run -d --name mi_mysql \ -e MYSQL_ROOT_PASSWORD=clave_secreta \ -v datos_app:/var/lib/mysql \ mysql:latest

La carpeta /datos_app guarda la base de datos en el host.

Si eliminas y vuelves a crear el contenedor, los datos seguirán intactos.

Elimina el contenedor y verifica que los datos persisten.


¿Cuándo usar volúmenes?

  • Bases de datos: Guardar datos que no quieres perder.
  • Logs: Mantener registros accesibles aunque los contenedores se reinicien.
  • Archivos compartidos: Si varios contenedores necesitan acceso a los mismos datos

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *