2017-08-12 142 views
0

尝试构建一个简单的ubuntu apache web服务器docker镜像时,docker build命令尝试安装软件包时出现错误。我在Docker中使用Ubuntu基础镜像来完成此操作。以下是我的Dockerfile中的代码;`docker build`尝试安装ubuntu软件包时失败

FROM ubuntu 
RUN apt-get update 
RUN apt-get install apache2 
RUN apt-get install apache2-utils 
RUN apt-get clean 
EXPOSE 80 
CMD ["apache2ctl", "-D", "FOREGROUND"] 

我的主机操作系统是Mac OSX El Capitan,并且在构建失败时出现错误;

The command '/bin/sh -c apt-get install apache2' returned a non-zero code: 1 

和我的docker build命令是;

docker build -t="webserver" . 

请任何帮助。提前致谢。

+0

尝试使用额外的命令行开关'-it',它应该打印标准输出,并希望错误消息从运行您的容器'apt-get'(从[类似的线程在这里](https://stackoverflow.com/a/39085298/1781026)) – chrki

+0

@chrki,它还没有在运行阶段,我仍然试图创建一个图像和-i在'docker build'中不可用。 – d3r1ck

+0

在您提供的错误消息的正上方应该有一条错误消息。你可以请包括它吗? – yamenk

回答

2

构建图像时,应该使用'-y'apt-get标志。

apt-get会要求您继续使用apache安装,因为在构建映像时无法与apt-get交互,所以您必须将'-y'标志传递给apt - 请提示。

尝试将其更改为:

FROM ubuntu 
RUN apt-get update 
RUN apt-get install apache2 -y 
RUN apt-get install apache2-utils -y 
RUN apt-get clean 
EXPOSE 80 
CMD ["apache2ctl", "-D", "FOREGROUND"] 

甚至:

FROM ubuntu 
RUN apt-get update && apt-get install apache2 apache2-utils -y 
RUN apt-get clean 
EXPOSE 80 
CMD ["apache2ctl", "-D", "FOREGROUND"] 
+0

是的,这个答案是正确的。谢谢 :) – d3r1ck