我有一个与主机共享卷的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.我可能做错了什么?
答案 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
出来时,我意识到发生了什么。