使用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来说这可能是正常的。
如果您有任何建议,我很高兴听到它。
谢谢!
答案 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
实现相同的结果