¿Cómo puedo mantener los subdirectorios de un directorio cuando lo monto vinculándolo a una nueva imagen de Docker?
Antecedentes
Estoy ejecutando una imagen de docker como el ejemplo del readme de Facebook:
cd docker/1.1.0/
docker build -t infer .
# monte el directorio de ejemplos locales dentro de la imagen
# también puede montar aquí su directorio de proyectos
docker run -it -v $PWD/../../examples:/infer-examples infer /bin/bash
# ahora debería estar dentro del contenedor docker con un indicador de shell, por ejemplo,
# ""root@5c3b9af90d59:/# "
cd /infer-examples/
infer --clang -c hello.c
Sin embargo, tanto al intentar el ejemplo literalmente como al montar mi propio directorio de proyectos como se menciona, no obtengo nada. A continuación, se muestra cuando lo ejecuté montando mi directorio de proyectos:
¿Cómo puedo enlazar correctamente mi directorio de proyectos al crear una imagen docker de infer?
davy.ai
Respuesta
Parece que el problema está en la ruta que estás utilizando para el montaje. Cuando ejecutas el comando
docker run -it -v $PWD/../../examples:/infer-examples infer /bin/bash
, estás intentando montar el directorio ubicado dos niveles más arriba desde tu directorio actual.Para unir correctamente tu directorio de proyecto, necesitas reemplazar la ruta en
-v $PWD/../../examples:/infer-examples
con la ruta a tu directorio de proyecto. Por ejemplo, si tu directorio de proyecto se encuentra en/home/user/myproject
, deberías ejecutar:Esto montará el directorio
/home/user/myproject
en/infer-examples
dentro del contenedor. Luego, puedes navegar a/infer-examples
dentro del contenedor y ejecutar el comandoinfer
en tus archivos de proyecto.Ten en cuenta que la ruta que uses debe ser una ruta absoluta, y es posible que necesites ajustar los permisos si tu directorio de proyecto no es propiedad del usuario que está ejecutando el contenedor de Docker.