从共享卷上运行docker上的shell脚本

时间:2015-12-09 20:07:16

标签: docker sh

我有一个与主机共享卷的docker容器。卷安装在根主文件夹中。在该文件夹中,我有一个我希望在容器启动并运行后运行的shell脚本。

我正在使用此命令:

docker exec -i localserver_web_1 sh /root/scripts/define_applications.sh

但是我收到了这个回复:

sh: 0: Can't open /root/scripts/define_applications.sh

当我从容器内部运行脚本时,脚本运行正常。它说它在/ root / scripts /中。我的权限设置为777.我可能做错了什么?

1 个答案:

答案 0 :(得分:2)

只是为了确定,在命令shell中尝试使用tty作为root执行:

docker exec -it -u root localserver_web_1 sh -c '/root/scripts/define_applications.sh'

如果不起作用,请至少通过docker exec检查其状态和内容:

docker exec -it -u root localserver_web_1 sh -c 'ls -alrt /root/scripts'
docker exec -it -u root localserver_web_1 sh -c 'cat /root/scripts/define_applications.sh'

同时检查图像以检查其ENTRYPOINT(类似to the check for its CMD):

docker inspect --format='{{.Config.Entrypoint}}' <image:tag>

OP Jon Schwartz确认in the comments

  

这是一个pebkac错误   该脚本实际上称为define-applications.sh,而不是define_applications.sh   cat行显示了我的问题。当它可以通过ls看到脚本时,我知道它应该能够实现它。当它无法cat出来时,我意识到发生了什么。