Montar directorios del host en Docker permite que un contenedor lea o modifique una carpeta real del equipo, sin copiarla a la imagen. Es un uso habitual de los bind mounts para trabajar con código, contenido y archivos de configuración.
👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Cómo montar directorios del host
Este laboratorio crea una carpeta temporal, escribe un archivo desde el host, lo lee desde un contenedor y después comprueba un archivo escrito por el contenedor. Al final elimina solo la carpeta temporal creada por el propio ejemplo.
set -eu
HOST_DIR=$(mktemp -d)
mkdir -p "$HOST_DIR/datos"
printf 'hola desde el host\n' > "$HOST_DIR/datos/entrada.txt"
docker run --rm --mount "type=bind,source=$HOST_DIR/datos,target=/data" alpine:3.22 sh -c 'cat /data/entrada.txt; printf "creado en el contenedor\n" > /data/salida.txt'
cat "$HOST_DIR/datos/salida.txt"
rm -r "$HOST_DIR"Qué significa cada parte de –mount
type=bind indica que Docker compartirá una ruta del host; source es el directorio del host y target es su punto de montaje dentro del contenedor. La ruta de destino debe ser absoluta. El ejemplo usa una ruta temporal para que la práctica no modifique archivos reales del proyecto.
La opción –mount falla si la ruta de origen no existe. La forma corta -v es más compacta, pero puede crear como directorio un origen ausente. Comprueba las rutas antes de iniciar el servicio.
Opciones frecuentes al compartir una carpeta
| Necesidad | Configuración | Resultado |
|---|---|---|
| Compartir una carpeta | source=./proyecto,target=/app | El proyecto del host aparece en /app |
| Permitir cambios desde el contenedor | Comportamiento predeterminado | Los cambios también afectan al host |
| Impedir escrituras | readonly o ro | El contenedor puede leer, pero no cambiar los archivos |
| Usar ruta relativa en Compose | source: ./contenido | La ruta se resuelve junto al archivo Compose local |
Montar el directorio de un proyecto con Compose
En Compose puedes usar la sintaxis larga para identificar el origen, el destino y el modo de acceso. En este ejemplo, el contenedor de Nginx publica el contenido de la carpeta local ./contenido en modo de solo lectura; crea esa carpeta antes de levantar el servicio.
services:
web:
image: nginx:alpine
volumes:
- type: bind
source: ./contenido
target: /usr/share/nginx/html
read_only: trueLa ruta relativa se interpreta desde la carpeta del proyecto Compose. Si el daemon Docker es remoto, el origen debe existir en el equipo donde se ejecuta el daemon; no basta con que esté en el ordenador desde el que lanzas el comando.
Buenas prácticas y errores comunes
Estas son las buenas prácticas para montar directorios del host en Docker:
- Monta solo el directorio que necesita el servicio. Un bind mount tiene acceso de escritura por defecto y los cambios se reflejan en el host.
- Usa readonly cuando la aplicación solo necesite leer los archivos.
- Un montaje sobre una carpeta no vacía de la imagen oculta temporalmente su contenido mientras el montaje está activo.
- Comprueba permisos y propietario si el contenedor no puede leer o escribir la carpeta; consulta la lección de diferencias entre volumen y bind mount para elegir el tipo de almacenamiento.

