脚本中带有docker的多命令
有了docker,我想为每个客户机提供一个vm,以便只在一个文件中编译和执行C程序 为此,由于dockerfile和命令“ADD”,我与docker和主机共享了一个文件夹。 我的文件夹是这样的:脚本中带有docker的多命令,docker,Docker,有了docker,我想为每个客户机提供一个vm,以便只在一个文件中编译和执行C程序 为此,由于dockerfile和命令“ADD”,我与docker和主机共享了一个文件夹。 我的文件夹是这样的: folder/id_user/script.sh folder/id_user/code.c 在script.sh中: gcc./compile/code.c-o./compile/code&./compile/code 我的问题是在文件中,我们可以阅读此添加: 所有新文件和目录都是使用模式0755、
folder/id_user/script.sh
folder/id_user/code.c
在script.sh中:
gcc./compile/code.c-o./compile/code&./compile/code
我的问题是在文件中,我们可以阅读此添加:
所有新文件和目录都是使用模式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。你知道为什么吗
也许你想知道为什么要这样做。
因为如果我这样做:
sudocker运行ubuntu/cpwd&&pwd
result:
/
/srv/website
因此,我们可以看到第一个命令在VM中,而不是第二个命令。我知道这对docker来说很正常
如果你有什么建议,我很乐意听
谢谢 您可以通过使用chmod运行命令来设置正确的模式:
# Dockerfile
...
ADD script.sh /root/script.sh
RUN chmod +x /root/script.sh
...
第二个问题,您应该使用CMD命令-&&approach在Dockerfile中有效,请尝试将这一行放在Dockerfile的末尾:
CMD pwd && pwd
然后docker build.
您将看到:
root@test:/home/test/# docker run <image>
/
/
root@test:/home/test/#docker run
/
/
您可以:
RUN /bin/sh /root/script.sh
达到同样的效果