在Docker映像内部生成mxnet时出错

在Docker映像内部生成mxnet时出错,docker,dockerfile,Docker,Dockerfile,当我尝试在Docker映像中构建mxnet时,我得到了以下消息: Step 14/16 : RUN ["/bin/bash", "-c", "cd /workspace/Project/mxnet"] ---> Running in c9337d66ee5e /workspace/Project/mxnet Removing intermediate container c9337d66ee5e ---> b92ad26e0218 Step 15/16 : RUN ["/

当我尝试在Docker映像中构建mxnet时,我得到了以下消息:

Step 14/16 : RUN ["/bin/bash", "-c", "cd /workspace/Project/mxnet"]

---> Running in c9337d66ee5e /workspace/Project/mxnet  
Removing intermediate container c9337d66ee5e  
---> b92ad26e0218  Step 15/16 : RUN ["/bin/bash", "-c", "make"]  
---> Running in 653a66e430b2 make:
*** No targets specified and no makefile found.  
Stop. The command '/bin/bash -c make' returned a non-zero code: 2
有什么建议吗?

Step 15/16 : RUN ["/bin/bash", "-c", "make"] 
[…] The command '/bin/bash -c make' returned a non-zero code: 2
可能是因为您事先运行了此命令:

Step 14/16 : RUN ["/bin/bash", "-c", "cd /workspace/Project/mxnet"]
这是Docker中的典型错误模式

总之,每个Docker RUN命令都是在子shell中运行的,因此

RUN ["/bin/bash", "-c", "cd /workspace/Project/mxnet"]
RUN other commands
其他命令不受目录更改的影响

要解决此问题,您可以:

  • 将两条管路更换为

    RUN cd /workspace/Project/mxnet && other commands
    
    WORKDIR /workspace/Project/mxnet
    RUN other commands
    
  • 或(首选解决方案)将两条管线更换为

    RUN cd /workspace/Project/mxnet && other commands
    
    WORKDIR /workspace/Project/mxnet
    RUN other commands
    
  • 解决方案2更为惯用,请注意

    WORKDIR /dir
    RUN some command
    
    在语义上可以看作是命令的等价物

    mkdir -p /dir && cd /dir && /bin/sh -c "some command"
    

    容器内的工作目录中似乎没有Makefile。你能发布你的整个
    Dockerfile
    ?@sp0gg,很抱歉,我不能发布,因为它包含一些机密信息,但要了解更多详细信息,mxnet文件夹位于主机中的一个项目内。在dockerfile中,我有:WORKDIR/workspace/My_Project COPY。nextI可以用一个脚本sh来安装一些包,最后我返回到项目中以构建mxnet?@sp0gg;在我放置dockerfile的项目中,我运行以下命令行:docker build-t my_image。