与脚本中的泊坞窗多命令
通过docker,我想给每个客户端提供一个虚拟机来编译和执行一个C程序,只有一个文件。
为此,我使用dockerfile和命令“ADD”与docker和主机共享一个文件夹。 我的文件夹是这样的:
folder/id_user/script.sh folder/id_user/code.c
在script.sh中:gcc ./compil/code.c -o ./compil/code&& ./compil/code
我的问题是在文档中,我们可以阅读这个为ADD:
所有新的文件和目录都使用0755,uid和gid 0模式创build。
但是当我在文件上启动“ls”时,我有:
ls -l compil/8f41dacd-8775-483e-8093-09a8712e82b1/ total 8 -rw-r--r-- 1 1000 1000 51 Feb 11 10:52 code.c -rw-r--r-- 1 1000 1000 54 Feb 11 10:52 script.sh
所以我不能执行script.sh。 你知道为什么吗?
也许你想知道为什么要这样下去。 这是因为如果我这样做:sudo docker运行ubuntu / C pwd && pwd
result: / /srv/website
所以我们可以看到第一个命令在虚拟机中,而不是第二个。 我明白docker工人可能是正常的。
如果您有任何build议,我很高兴听到它。
谢谢 !
您可以通过运行chmod命令设置正确的模式:
# Dockerfile ... ADD script.sh /root/script.sh RUN chmod +x /root/script.sh ...
第二个问题,你应该使用CMD命令 – &&方法在Dockerfile中工作,试着把这一行放在你的Dockerfile的末尾:
CMD pwd && pwd
然后docker build .
你会看到:
root@test:/home/test/# docker run <image> / /
要么你可以做:
RUN /bin/sh /root/script.sh
达到同样的效果