Cómo funciona el almacenamiento en Docker: volúmenes vs montajes de enlace | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Cómo funciona el almacenamiento en Docker: volúmenes vs montajes de enlace

Introducción

En este tutorial, aprenderás cómo funciona el almacenamiento en Docker y cómo persistir datos usando Volúmenes de Docker y Bind Mounts. También entenderás las diferencias clave entre estos enfoques y cuándo usar cada uno en producción. Esto te ayudará a evitar la pérdida de datos y diseñar sistemas en contenedores confiables.

Requisitos previos

  • Público objetivo: Administradores de sistemas principiantes
  • Tiempo estimado: ~30 minutos
  • Sistema operativo: Cualquier SO con soporte para Docker como Ubuntu 22.04+, Debian 12+, CentOS Stream, o macOS con Docker Desktop
  • Software: Docker 24.0.0 o posterior
  • Permisos: Usuario con acceso a Docker o privilegios de sudo
  • Hardware: Al menos 2 GB de RAM y 10 GB de espacio libre en disco
  • Red: Acceso a Internet para descargar imágenes de contenedores
  • Conocimientos asumidos: Uso básico de la línea de comandos y comprensión de contenedores

Paso 1: Entender cómo funciona el almacenamiento en Docker

Los contenedores de Docker utilizan un sistema de archivos en capas. Cada contenedor tiene una capa escribible sobre capas de imagen de solo lectura.

Qué sucede cuando un contenedor escribe datos

  1. Docker almacena las capas de imagen como de solo lectura
  2. Cuando inicias un contenedor, Docker añade una capa escribible
  3. Cualquier cambio en archivos ocurre solo en esta capa escribible

Resultado

Cuando eliminas un contenedor, todos los datos en la capa escribible se pierden. Esto significa que el almacenamiento de contenedores es efímero por defecto.

Info

Este comportamiento es útil para aplicaciones sin estado pero no para bases de datos o servicios persistentes.

Paso 2: Crear y usar Volúmenes de Docker

Los Volúmenes de Docker son ubicaciones de almacenamiento gestionadas creadas y mantenidas por Docker.

Crear un volumen

Ejecuta el siguiente comando:

docker volume create my_volume

Deberías ver el nombre del volumen devuelto.

Usar un volumen en un contenedor

Ejecuta el siguiente comando:

docker run -d -v my_volume:/app/data --name volume_test busybox

Docker monta el volumen dentro del contenedor en /app/data.

Resultado

Los datos escritos en /app/data persisten incluso si el contenedor es eliminado.

Características clave de los volúmenes

  • Gestionados por Docker
  • Almacenados en directorios internos de Docker como /var/lib/docker/volumes/
  • Fáciles de respaldar y migrar
  • Aislados de la estructura del sistema de archivos del host

Tip

Usa volúmenes para bases de datos y cargas de trabajo en producción.

Paso 3: Crear y usar Bind Mounts

Los Bind Mounts enlazan un directorio específico en el host a un directorio dentro del contenedor.

Usar un bind mount

Ejecuta el siguiente comando:

docker run -d -v /home/<YOUR_USERNAME>/data:/app/data --name bind_test busybox

Resultado

El contenedor accede directamente al directorio del host. Cualquier cambio en el directorio del host es inmediatamente visible dentro del contenedor.

Características clave de los bind mounts

  • Dependen de las rutas del sistema de archivos del host
  • Permiten la edición directa de archivos desde el host
  • No hay aislamiento gestionado por Docker
  • Más flexibles pero menos portátiles

Info

Los bind mounts reflejan cambios inmediatamente entre el host y el contenedor.

Paso 4: Comparar Volúmenes y Bind Mounts

Entender las diferencias te ayuda a elegir la opción correcta.

Volúmenes de Docker

  • Gestionados por Docker
  • Portátiles entre entornos
  • Más seguros para uso en producción
  • Más fáciles de respaldar
  • Abstraídos del sistema de archivos del host

Bind Mounts

  • Gestionados por el host
  • Vinculados a rutas específicas del sistema de archivos
  • Útiles para desarrollo
  • Proporcionan acceso directo a archivos
  • Menos seguros si se configuran incorrectamente

Paso 5: Elegir entre Volúmenes y Bind Mounts en Producción

Usa las siguientes pautas.

Cuándo usar Volúmenes de Docker

  • Ejecutar bases de datos como MySQL o PostgreSQL
  • Almacenar datos de aplicaciones que deben persistir
  • Desplegar servicios en producción
  • Necesitar portabilidad entre servidores

Cuándo usar Bind Mounts

  • Entornos de desarrollo local
  • Editar código o archivos de configuración directamente
  • Depurar el comportamiento de contenedores
  • Configuraciones temporales o de prueba

Info

Importante: Los bind mounts pueden exponer archivos sensibles del host a los contenedores si se configuran incorrectamente. Siempre verifica rutas y permisos.

Verificación y Pruebas

Crea un contenedor de prueba con un volumen:

docker run -it -v my_volume:/data --name playground busybox

Dentro del contenedor, crea un archivo:

echo test > /data/file.txt

Sal del contenedor y elimínalo:

docker rm -f playground

Inicia un nuevo contenedor con el mismo volumen:

docker run -it -v my_volume:/data --name playground busybox

Verifica el archivo:

cat /data/file.txt

Resultado esperado: El archivo aún existe, confirmando la persistencia de datos.

Revertir Cambios

Para limpiar recursos, ejecuta los siguientes comandos:

docker rm -f playground volume_test bind_test

docker volume rm my_volume

docker system prune -f

Info

Importante: Eliminar volúmenes borra todos los datos almacenados permanentemente.

Solución de Problemas

  • Problema: Los datos desaparecen después de reiniciar el contenedor
    Causa: No se usó volumen o bind mount
    Solución: Adjunta almacenamiento persistente usando volúmenes o bind mounts
  • Problema: Errores de permiso denegado
    Causa: Desajuste de permisos del directorio del host
    Solución: Ajusta permisos usando chmod o chown
  • Problema: El volumen no se monta correctamente
    Causa: Ruta o sintaxis incorrecta
    Solución: Verifica el formato de montaje y las rutas

Conclusión y Próximos Pasos

Aprendiste cómo funciona el almacenamiento en Docker y cómo persistir datos usando volúmenes y bind mounts. También entiendes cuándo usar cada enfoque en producción. A continuación, explora Docker Compose para gestionar aplicaciones de múltiples contenedores y definir almacenamiento de una manera más estructurada.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA