Estoy ejecutando Docker (1.10.2) en Windows . Creé un script para hacer eco de 'Hello World' en mi máquina y lo almacené en C:/Users/username/MountTest . Creé un nuevo contenedor y monté este directorio (MountTest) como un volumen de datos. El comando que ejecuté para hacerlo se muestra a continuación:
docker run -t -i --name mounttest -v /c/Users/sarin/MountTest:/home ubuntu /bin/bashA continuación, ejecuto el comando para ejecutar el script dentro del contenedor mounttest .
docker exec -it mounttest sh /home/helloworld.shEl resultado es el siguiente:
: not foundworld.sh: 2: /home/helloworld.sh: Hello WorldObtengo el resultado deseado (echo Hello World) pero quiero entender el motivo detrás de los errores no encontrados .
Nota: Esta pregunta puede parecer similar a Ejecutar script de shell en la ventana acoplable desde un volumen compartido , pero aborda problemas relacionados con los permisos.
Referencias: El archivo helloworld.sh :
#!/bin/sh echo 'Hello World' La información de los volúmenes montados se captura a continuación. 
Teniendo en cuenta que el PUNTO DE ENTRADA predeterminado para la imagen 'ubuntu' es sh -c , el comando final ejecutado en docker exec es:
sh -c 'sh /home/helloworld.sh'Se ve un poco extraño y podría ser la causa del mensaje de error.
Prueba simplemente:
docker exec -it mounttest /home/helloworld.sh # or docker exec -it mounttest sh -c '/home/helloworld.sh' Por supuesto, la ejecución de la ventana docker exec debe realizarse en una sesión ssh de boot2docker, similar a la sesión de shell en la que ejecutó una ventana docker run .
Dado que la docker run abre un bash, debe crear una nueva sesión de boot2docker (docker-machine ssh) y, en esa nueva sesión de shell de boot2docker, pruebe el docker exec .
Probar docker exec desde el bash creado por docker run significa intentar hacer DiD (Docker in Docker). No es relevante para su prueba.