docker / Guías

Docker volume o bind mount: ¿cuál elegir?

Elige según dónde estarán los datos y cómo trabajarás. Docker administra los volúmenes; un bind mount expone al contenedor una ruta concreta del host.

Los ejemplos usan Bash; consulta las referencias para los detalles de tu entorno.

Compara los modelos de almacenamiento

PreguntaVolumen con nombreBind mount
¿Quién elige la ubicación?Docker la administra.Indicas una ruta del host.
Uso habitualDatos persistentes de la aplicación.Código fuente o configuración del host.
¿En un host nuevo?Crear o restaurar el volumen.Preparar la ruta y los archivos.

Ambos pueden sobrevivir a la eliminación del contenedor. Ninguno es una copia de seguridad automática. Con un daemon remoto, la ruta de origen está en el host del daemon, no necesariamente en tu ordenador.

Observa la persistencia de un volumen

Elige un nombre de volumen nuevo. La primera ejecución puede descargar la imagen Alpine del ejemplo.

docker volume create devsheet-volume-demo
docker run --rm --mount type=volume,source=devsheet-volume-demo,target=/data alpine:3.22 sh -c "echo hello > /data/note.txt"
docker run --rm --mount type=volume,source=devsheet-volume-demo,target=/data alpine:3.22 cat /data/note.txt

Resultado esperado: hello en la segunda ejecución. --rm eliminó el primer contenedor, pero el volumen con nombre explícito conserva el archivo. El volumen permanece hasta que lo elimines voluntariamente.

Monta un directorio de solo lectura

En Bash, crea un directorio nuevo de prueba. Con esta sintaxis de montaje, la ruta de origen debe existir.

mkdir devsheet-bind-demo
printf "hello\n" > devsheet-bind-demo/note.txt
docker run --rm --mount "type=bind,source=$(pwd)/devsheet-bind-demo,target=/data,readonly" alpine:3.22 cat /data/note.txt

Resultado esperado: hello desde el archivo del host. readonly impide escribir mediante ese montaje. Docker Desktop puede pedir autorización para compartir el directorio. El directorio del host permanece.

Verifica montajes y copias de seguridad

Montar sobre un directorio no vacío del contenedor oculta su contenido anterior mientras dura el montaje. Revisa la ruta en Mounts con docker inspect <container>.

Un bind mount escribible permite modificar archivos del host. Limita el directorio expuesto. Para bases de datos usa una copia adecuada; copiar archivos activos sin comprobar la coherencia no basta.

Referencias

Todas las guías