生成和运行之间的Docker权限不同

生成和运行之间的Docker权限不同,docker,dockerfile,Docker,Dockerfile,我昨天刚开始和Docker打交道,在构建环境和运行环境之间出现了问题。我有一些问题,比如 RUN install.sh /bin/sh: 1: install.sh: Permission denied the command '/bin/sh -c install.sh' returned a non-zero code: 126 或者 RUN . sourceme.env /bin/sh: 1: .: sourceme.env: not found The command '/bin/sh

我昨天刚开始和Docker打交道,在构建环境和运行环境之间出现了问题。我有一些问题,比如

RUN install.sh
/bin/sh: 1: install.sh: Permission denied
the command '/bin/sh -c install.sh' returned a non-zero code: 126
或者

RUN . sourceme.env
/bin/sh: 1: .: sourceme.env: not found
The command '/bin/sh -c . sourceme.env' returned a non-zero code: 2
我使用“sudo docker build-t joes”和 我使用“sudo docker run-it joes”跑步

令人沮丧的是,在构建失败后,我可以运行它,看到我在预期的工作目录中,并运行在构建过程中失败的命令。那么为什么会出现这种差异呢

这是在linux系统上,我使用的是“来自ubuntu:18.04”

要绕过我使用的RUN install.sh错误

RUN /bin/sh install.sh
转换为

/bin/sh -c /bin/sh install.sh

发布您的整个Dockerfile。问题是您没有指向正确的位置。复制时,请将其复制到中,然后为其提供绝对路径。 e、 g

编辑:如果容器的主要任务是运行install.sh脚本,则将其与CMD一起使用,而不是运行。使用run构建env和evth-else

似乎是我的主要问题


除了运行多个RUN命令,而不是RUN…&&&…&&&。。。etc

对于这个部分,实际上只是WORKDIR/some/dir=>RUN svn co someurl=>RUN。如果sourceme.env失败,我将运行容器(该容器是通过删除虚线创建的),我看到我已经在/some/dir中,并且可以看到sourceme.env文件。实际上,使用/some/dir/sourceme.env是可行的,但其中的路径会中断。如果目录未使用/不可见,WORKDIR有什么意义?另外,我的大问题是/bin/sh和source不能混合。那么,我如何在不调用“/bin/sh”@JoeManiaci的情况下从命令行“运行”命令,请编辑您的问题并包含Dockerfile?这将有助于我们重现您的问题。
COPY install.sh /install.sh
CMD ./install.sh