在脚本中使用docker的多命令

时间:2014-02-11 15:43:58

标签: docker

使用docker我想为每个客户端提供一个vm,只在一个文件中编译和执行一个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创建所有新文件和目录。

但是当我在文件上启动“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 run ubuntu / C pwd&& PWD

result:
/
/srv/website

所以我们可以看到第一个命令在VM中而不是第二个。我知道对于docker来说这可能是正常的。

如果您有任何建议,我很高兴听到它。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用chmod:

通过RUN命令设置正确的模式
# 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>
/
/

答案 1 :(得分:0)

要么你可以这样做:

RUN /bin/sh /root/script.sh 

实现相同的结果