Un bind mount conecta una ruta concreta del host con una ruta del contenedor. Un tmpfs crea almacenamiento temporal respaldado por memoria. Ambos cruzan la frontera de la writable layer, pero tienen propósitos y riesgos diferentes.
Texto
bind mount → path real del host
volume → almacenamiento administrado por Docker
tmpfs → memoria temporal
La elección no debe basarse solo en sintaxis. Debe considerar lifecycle, portabilidad, seguridad, rendimiento, ownership y recuperación.
docker run --mounttype=bind,src=/host/path,dst=/container/path,readonly image
Forma corta:
Bash
docker run -v /host/path:/container/path:ro image
--mount hace visibles tipo, source, destination y opciones, y evita algunos comportamientos implícitos de creación de paths. Para documentación y producción suele ser más claro.
docker run -v /var/run/docker.sock:/var/run/docker.sock tool
Esto entrega acceso a la API del daemon. Un proceso puede solicitar containers privilegiados y montar el host. Debe tratarse como capacidad administrativa, no como un bind mount ordinario.
Alternativas:
API intermediaria con autorización limitada;
builder remoto;
runners efímeros;
rootless BuildKit;
eliminar la necesidad de controlar Docker desde el container.
En hosts con SELinux, el label del path puede impedir acceso aunque los permisos Unix parezcan correctos. Opciones de relabel pueden existir en la sintaxis corta según plataforma.
Cambiar labels tiene impacto fuera del container. Comprende la política y evita aplicar opciones al azar en paths compartidos críticos.
En Compose, los paths relativos se resuelven respecto al proyecto/configuración según reglas de Compose. En CLI se resuelven en el shell antes de enviarse.
Con un daemon remoto, el source del bind debe existir en el host del daemon. Tu $PWD local no se transfiere automáticamente.
Un restart de la misma instancia puede tener comportamiento diferente según operación y runtime, pero debes diseñarlo como temporal y descartable. La pérdida del host o recreación elimina el contenido.