Dockerfile运行命令返回“没有这样的文件或目录”

尝试创build一个Dockerfile来创build一个包含在CentOS 7系统上自定义构buildPython 3的系统。 我的Dockerfile如下所示:

FROM centos:7 RUN yum -y update RUN yum -y upgrade RUN yum -y groupinstall "Development Tools" RUN yum -y install zlib-devel bzip2-devel sqlite sqlite-devel openssl-devel ADD http://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz Python-3.5.2.tgz RUN ["tar","zxf","Python-3.5.2.tgz"] WORKDIR "/Python-3.5.2" RUN "./configure --prefix=/usr/local" RUN "make" RUN "make altinstall" RUN ["rm","-rf","Python-3.5.2"] RUN yum -y clean headers &&\ yum -y clean packages &&\ yum -y clean metadata COPY pack/*.py /usr/src/StorageService/ RUN ["/usr/local/bin/pip3.5","install","virtualenv"] WORKDIR "/usr/src/StorageService" RUN ["virtualenv","--python=python3","--always-copy","SSEnv"] RUN ["source","SSEnv/bin/activate"] RUN ["/usr/local/bin/pip3.5","install","requests"] RUN ["/usr/local/bin/pip3.5","install","gunicorn"] CMD ["gunicorn","--bind=5000","app"] 

并一直到“运行./configure –prefix = / usr / local”行,然后给我一个“没有这样的文件或目录”的消息。 剪断:

 ... previous steps etc. ... Step 8 : RUN tar zxf Python-3.5.2.tgz ---> Running in 40f96306f38a ---> 95804837192a Removing intermediate container 40f96306f38a Step 9 : WORKDIR "/Python-3.5.2" ---> Running in d8cff5664038 ---> 038c6b892731 Removing intermediate container d8cff5664038 Step 10 : RUN "./configure --prefix=/usr/local" ---> Running in 49b410bed643 /bin/sh: ./configure --prefix=/usr/local: No such file or directory The command '/bin/sh -c "./configure --prefix=/usr/local"' returned a non-zero code: 127 

当我启动容器038c6b892731进入bash会话时,“./configure –prefix = / usr / local”命令按预期工作:

 $ docker run -it 038c6b892731 bash [root@3aeaea02fede Python-3.5.2]# ./configure --prefix=/usr/local checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for --enable-universalsdk... no checking for --with-universal-archs... no ... etc. ... 

我已经尝试将运行命令更改为“RUN [”./configure","–prefix=/usr/local“]”,输出的唯一更改是错误消息的格式稍有不同。

这是运行在:

 $ docker -v Docker version 1.12.2, build bb80604 

我用相同的错误运行你的Dockerfile

但是当我改变这个:

  RUN "./configure --prefix=/usr/local" 

对此:

  RUN ./configure --prefix=/usr/local 

我仍然有RUN "make"的问题,所以你也需要像这样改变Dockerfile:

 RUN ["tar","zxf","Python-3.5.2.tgz"] WORKDIR "/Python-3.5.2" RUN ./configure --prefix=/usr/local # changed RUN make # changed RUN make altinstall RUN ["rm","-rf","Python-3.5.2"] 

这对我有用。 或者你可以用RUN ["xy","ab"]的方式RUN ["xy","ab"]像@Rao回答。

Dockerfile有一些细微的变化,如下所示:

所以,请改变下面的行
从:

 ADD http://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz Python-3.5.2.tgz RUN ["tar","zxf","Python-3.5.2.tgz"] WORKDIR "/Python-3.5.2" RUN "./configure --prefix=/usr/local" 

至:

 ADD http://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz /Python-3.5.2.tgz RUN ["tar","zxf","/Python-3.5.2.tgz"] WORKDIR "/Python-3.5.2" RUN ["./configure", "--prefix=/usr/local"]