首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker build无法找到

Docker build无法找到
EN

Stack Overflow用户
提问于 2018-03-30 16:38:06
回答 1查看 2.5K关注 0票数 2

我是新来的Docker,我正试图创建一个映像,在那里我安装英特尔MPI运行时。我设置了WORKDIR,并在该文件夹中压缩了.tgz文件。但是我无法运行install.sh

当停靠程序生成失败时,它仍然会创建一个映像。我可以在映像之外运行一个容器,并且可以使用相同的命令手动安装。但是这个命令在docker构建过程中失败了,我不知道为什么。

-Sachin

我的Dockerfile:

代码语言:javascript
复制
[root@curly sachin_docker]# cat Dockerfile
FROM  centos:7
RUN useradd --create-home -s /bin/bash dumuser
ADD l_mpi-rt_2018.2.199.tgz /home/dumuser
WORKDIR /home/dumuser/l_mpi-rt_2018.2.199
RUN "./install.sh --user-mode --silent ./silent.cfg --ignore-cpu"
USER dumuser
[root@curly sachin_docker]#

输出:

代码语言:javascript
复制
> [root@curly sachin_docker]# docker build -t mympi_test . 
Sending build context to Docker daemon  47.53MB 
Step 1/6 : FROM  centos:7  
  ---> 2d194b392dd1 
Step 2/6 : RUN useradd --create-home -s /bin/bash dumuser
  ---> Using cache  
  ---> a5b06d51c8c3 
Step 3/6 : ADD l_mpi-rt_2018.2.199.tgz /home/dumuser  
  ---> 1bfd6a2744f0 
Step 4/6 : WORKDIR /home/dumuser/l_mpi-rt_2018.2.199 
Removing intermediate container 3e599f1454c8  
  ---> 44e5b5eed7b8 
Step 5/6 : RUN "./install.sh --user-mode --silent ./silent.cfg --ignore-cpu"  
  ---> Running in 2e8fc1017095 
/bin/sh: ./install.sh --user-mode --silent ./silent.cfg --ignore-cpu: No such file or directory 
The command '/bin/sh -c "./install.sh --user-mode --silent ./silent.cfg --ignore-cpu"' returned a non-zero code: 127 [root@curly sachin_docker]#

当我在映像上运行容器时,我可以使用相同的命令手动运行安装:

代码语言:javascript
复制
[root@curly sachin_docker]# docker run --rm -ti 44e5b5eed7b8 bash
[root@6dfc30bbb006 l_mpi-rt_2018.2.199]# /bin/sh -c  "./install.sh --user-mode --silent ./silent.cfg --ignore-cpu" 
[root@6dfc30bbb006 l_mpi-rt_2018.2.199]# ls /opt/intel bin                     
compilers_and_libraries_2018        documentation_2018 
parallel_studio_xe_2018        samples_2018 compilers_and_libraries 
compilers_and_libraries_2018.2.199  impi               
parallel_studio_xe_2018.2.046  uninstall 
[root@6dfc30bbb006 l_mpi-rt_2018.2.199]#
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 17:43:15

问题似乎是由于您在Dockerfile中的以下指令中包含了引号:

代码语言:javascript
复制
RUN "./install.sh --user-mode --silent ./silent.cfg --ignore-cpu"

因为包含了引号,所以整个字符串将被计算为要运行的命令。基本上,所发生的事情如下:

代码语言:javascript
复制
/bin/bash -c "\"./install.sh --user-mode --silent ./silent.cfg --ignore-cpu\""

类似地,如果尝试在交互式shell中使用引号运行此命令,则会得到类似的错误:

代码语言:javascript
复制
$ "./install.sh --user-mode --silent ./silent.cfg --ignore-cpu"
bash: ./install.sh --user-mode --silent ./silent.cfg --ignore-cpu: No such file or directory

移除引号,它将把./install.sh作为命令,将字符串的其余部分作为要传入的参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49578042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档