El volumen de Docker y los montajes de enlace se utilizan para asignar directorios en el sistema operativo host a ubicaciones en el sistema de archivos del contenedor. Si bien se usan comúnmente para montar directorios completos, también puede usarlos para vincular simbólicamente archivos individuales.
Enlace simbólico a Docker desde el host
El montaje de directorios completos funciona bien si está sobrescribiendo una lista completa de archivos de configuración, pero si solo desea elegir uno, deberá usar un solo montaje de archivo. Esto también es útil si desea tener varios montajes en el mismo directorio, pero desde diferentes ubicaciones. Funciona de manera muy similar a un enlace simbólico normal de Linux, excepto que se administra a través de Docker y cruza el puente entre el host y el sistema de archivos contenedor.
Los montajes de volumen normales de Docker requieren montaje en un objetivo directorio, dentro del cual se vinculará el volumen.
docker volume create nginx-config docker run -d --name devtest --mount source=nginx-config,target=/etc/nginx nginx:latest
Sin embargo, con los montajes de enlace, la fuente puede ser un directorio o archivo en el anfitrión. Los montajes de volumen no son compatibles con esto y, aunque normalmente desea usarlos, debe usar montajes de enlace de nivel inferior si desea montar archivos individuales.
Para hacer esto, puede ejecutar el contenedor con la bandera --mount type=bind
, que admiten archivos individuales si especifica la ruta:
docker run -it --mount type=bind,source=/path/file.cfg,target=/etc/example/file.cfg nginx sh
Alternativamente, si realmente desea usar volúmenes de Docker, puede crear un volumen solo con el archivo que planea montar, montarlo en un directorio temporal en el contenedor y luego crear un enlace simbólico real dentro del contenedor (en la compilación de Docker script) que se vincularía al directorio temporal con el archivo. Esta es probablemente una solución peor que un montaje de enlace en general, pero le permite almacenar datos a través de la API de volumen de Docker.