Cómo montar directorios del host

como-montar-directorios-del-host
como-montar-directorios-del-host

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

NecesidadConfiguraciónResultado
Compartir una carpetasource=./proyecto,target=/appEl proyecto del host aparece en /app
Permitir cambios desde el contenedorComportamiento predeterminadoLos cambios también afectan al host
Impedir escriturasreadonly o roEl contenedor puede leer, pero no cambiar los archivos
Usar ruta relativa en Composesource: ./contenidoLa 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: true

La 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.

Documentación oficial y recursos

Lecciones relacionadas del curso

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 *