问题
I have a docker container that has a shared volume with the host. The volume mounts in the root home folder. In that folder, I have a shell script I want to run once the container is up and running.
I was using this command:
docker exec -i localserver_web_1 sh /root/scripts/define_applications.sh
but I'm getting this response:
sh: 0: Can't open /root/scripts/define_applications.sh
The script is working fine when I run it from inside the container. It says it's in /root/scripts/. I have permissions set at 777. What could I be doing wrong?
回答1:
Just to be sure, try and exec as root, with a tty, in a command shell:
docker exec -it -u root localserver_web_1 sh -c '/root/scripts/define_applications.sh'
If it does not work, check at least its presence and content through 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'
Also inspect the image to check its ENTRYPOINT
(similar to the check for its CMD):
docker inspect --format='{{.Config.Entrypoint}}' <image:tag>
The OP Jon Schwartz confirms in the comments:
this was a pebkac error.
The script is actually calleddefine-applications.sh
, notdefine_applications.sh
.
Thecat
line showed me my issue. When it could see the script through ls, I knew it should be able to get to it. When it couldn'tcat
out, I realized what happened.
来源:https://stackoverflow.com/questions/34188041/run-shell-script-on-docker-from-shared-volume