与脚本中的泊坞窗多命令

通过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 

达到同样的效果