gpt4 book ai didi

docker - 在脚本中使用Docker的多命令

转载 作者:行者123 更新时间:2023-12-02 21:29:50 24 4
gpt4 key购买 nike

对于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

我的问题是在文档中,我们可以阅读以下内容进行添加:

All new files and directories are created with mode 0755, uid and 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。你知道为什么吗?

也许您想知道为什么要这样进行。
这是因为如果我这样做:
须藤泊坞运行ubuntu / C pwd && pwd
result:
/
/srv/website

因此,我们可以看到第一个命令在VM中,而不是第二个。我了解这对于docker可能是正常的。

如果您有任何建议,我很乐意听。

谢谢 !

最佳答案

您可以使用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>
/
/

关于docker - 在脚本中使用Docker的多命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21706376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com