【问题标题】:Docker building fails: returned a non-zero code: 1Docker 构建失败:返回非零代码:1
【发布时间】:2017-09-08 06:50:41
【问题描述】:

Dockerfile1

FROM ubuntu:latest
MAINTAINER ME
RUN apt-get update
RUN apt-get update && apt-get install -y net-tools \
&& apt-get install inetutils-traceroute \
&& apt-get install iputils-ping \
&& apt-get install xinetd telnetd

Dockerfile2

FROM ubuntu:latest
MAINTAINER ME
RUN apt-get update
RUN apt-get update && apt-get install -y net-tools
RUN apt-get update && apt-get install inetutils-traceroute
RUN apt-get update apt-get install iputils-ping
RUN apt-get install xinetd telnetd

Dockerfile3

FROM ubuntu:latest
MAINTAINER ME
RUN apt-get update
RUN apt-get install inetutils-traceroute
RUN apt-get install -y net-tools
RUN apt-get update apt-get install iputils-ping
RUN apt-get install xinetd telnetd

我尝试了我的 dockerfile 的所有上述风格,但每次都遇到同样的错误:

The command '/bin/sh -c apt-get update && apt-get install -y net-tools && apt-get install inetutils-traceroute && apt-get install iputils-ping && apt-get install xinetd telnetd' returned a non-zero code: 1

【问题讨论】:

  • 有人发布了一个有效的答案并在我接受之前将其删除...
  • 你的问题是apt-get install 需要交互,如果你没有传入-y 选项,这就是它失败的原因,因为没有什么可交互的。请同时阅读best practices for writing docker files,以提示编写添加一堆包的正确方法。

标签: linux docker dockerfile


【解决方案1】:

在我接受之前,有人发布了答案并将其删除。但这里是 -

FROM ubuntu:latest
MAINTAINER ME

RUN apt-get update && apt-get install -y \
net-tools inetutils-traceroute \
iputils-ping xinetd telnetd

这行得通!

【讨论】:

    【解决方案2】:

    尝试在 docker 端对 apt-get 或 apt 管理器使用 key -y。 例如:

    RUN apt-get update
    RUN apt -y install net-tools
    

    如果没有 -y,apt-get 会提出一个明确的问题——“你确定要安装它吗?”。没有答案 docker 使用代码 1 放弃了安装。问题在这里。

    【讨论】: