无法(apt-get)在docker中安装软件包

我安装了Ubuntu 14.04虚拟机并运行docker(1.11.2)。 我尝试构build示例图像( 这里 )。

docker文件:

FROM java:8 # Install maven RUN apt-get update RUN apt-get install -y maven .... 

我得到以下错误:

 Step 3: RUN apt-get update --> Using cache --->64345sdd332 Step 4: RUN apt-get install -y maven ---> Running in a6c1d5d54b7a Reading package lists... Reading dependency tree... Reading state information... E: Unable to locate package maven INFO[0029] The command [/bin/sh -c apt-get install -y maven] returned a non-zero code:100 

在这里输入图像说明

我尝试了以下解决scheme,但没有成功。

  1. 在这里重新启动docker

  2. 运行apt-get -qq -y install curl here :同样的错误:(

我如何查看详细的错误信息? 有什么办法来解决这个问题?

你可能需要在docker之前更新os

尝试先运行apt-get update ,然后apt-get install xxx

apt-get update的caching结果可能非常陈旧。 根据Docker最佳实践重新devise包拉:

 FROM java:8 # Install maven RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive \ apt-get install -y maven \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* 

基于我曾经遇到的类似问题,您希望查看可能的networking问题和可能的图像相关问题。

  • networking问题:你已经在看代理相关的东西。 确保docker自动完成的iptables设置没有被你自己或其他应用程序意外地搞乱。 通常,如果另一个Docker容器运行net = host选项,则可能会造成麻烦。

  • 图像问题:您在容器中运行的发行版不是Ubuntu 14.04,而是java:8的发行版。 如果你从docker hub上的官方库里拿到了java的图像,你最初的图像层次是来自Debian的jessie。 您可能希望查看此层次结构中不同的Dockerfile,以找出repo安装程序不在您正在查看的位置。

对于这两种情况,为了debugging这个,我build议你在最新映像里面运行一个shell来查看映像中的实际networking和回购情况。 在你的情况

 docker run -ti --rm 64345sdd332 /bin/bash 

在运行install maven命令之前给你一个shell。

我目前正在代理之后工作。 它没有下载一些依赖。 为此你不得不在docker文件中提到代理configuration。 REF

但是,现在我面临着由于代理运行"mvn", "dependency:resolve"而困难,maven本身阻止下载一些依赖和构build失败。

感谢你的大力支持!