我在 Windows 上运行Docker(1.10.2)。我创建了一个脚本来回应“Hello World'在我的机器上并将其存储在 C:/ Users / username / MountTest 中。我创建了一个新容器并将此目录(MountTest)作为数据卷安装。我运行的命令如下所示:
docker run -t -i --name mounttest -v /c/Users/sarin/MountTest:/home ubuntu /bin/bash
接下来,我运行命令在容器 mounttest 中执行脚本。
docker exec -it mounttest sh /home/helloworld.sh
结果如下:
: not foundworld.sh: 2: /home/helloworld.sh:
Hello World
我得到了所需的输出(echo Hello World),但我想了解未找到错误背后的原因。
注意:此问题可能与Run shell script on docker from shared volume类似,但它解决了与权限相关的问题。
参考文献: helloworld.sh 文件:
#!/bin/sh
echo 'Hello World'
答案 0 :(得分:1)
考虑到'ubuntu'图像的默认ENTRYPOINT是sh -c
,在docker exec
上执行的最终命令是:
sh -c 'sh /home/helloworld.sh'
看起来有点奇怪,可能是错误信息的原因。
尝试简单:
docker exec -it mounttest /home/helloworld.sh
# or
docker exec -it mounttest sh -c '/home/helloworld.sh'
当然,docker exec
应该在boot2docker ssh会话中完成,simalar到你执行docker run
的shell会话。
由于docker run
打开了一个bash,你应该创建一个新的boot2docker会话(docker-machine ssh),并在新的boot2docker shell会话中尝试docker exec
。
在docker exec
的bash中尝试docker run
意味着尝试做DiD(Docker中的Docker)。它与您的测试无关。