api-get“在Docker下从服务器读取错误”

我在Bash中运行以下命令:

DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && apt-get install -y build-essential git libncurses5-dev openssl \ libssl-dev fop xsltproc unixodbc-dev curl 

它运行,但在中间失败:

 Get:96 http://security.debian.org/ jessie/updates/main linux-libc-dev amd64 3.16.7-ckt9-3~deb8u1 [991 kB] Get:97 http://security.debian.org/ jessie/updates/main curl amd64 7.38.0-4+deb8u2 [200 kB] Get:98 http://security.debian.org/ jessie/updates/main openjdk-7-jre amd64 7u79-2.5.5-1~deb8u1 [176 kB] Get:99 http://http.debian.net/debian/ jessie/main libgtk2.0-0 amd64 2.24.25-3 [2301 kB] Err http://http.debian.net/debian/ jessie/main dpkg-dev all 1.17.25 Error reading from server. Remote end closed connection [IP: 176.9.184.93 80] Get:100 http://http.debian.net/debian/ jessie/main libatk-wrapper-java all 0.30.5-1 [30.3 kB] Get:101 http://http.debian.net/debian/ jessie/main libatk-wrapper-java-jni amd64 0.30.5-1 [24.8 kB] Get:102 http://http.debian.net/debian/ jessie/main libatomic1 amd64 4.9.2-10 [8992 B] Get:103 http://http.debian.net/debian/ jessie/main libavahi-glib1 amd64 0.6.31-5 [36.4 kB] 

因此,整个操作失败,错误

 E: Failed to fetch http://http.debian.net/debian/pool/main/d/dpkg/dpkg-dev_1.17.25_all.deb Error reading from server. Remote end closed connection [IP: 176.9.184.93 80] E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? 

我正在运行这个作为Docker构build的一部分。 我的Dockerfile读取

 FROM debian:jessie RUN DEBIAN_FRONTEND=noninteractive \ apt-get update -qq \ && apt-get install -y \ build-essential \ git \ libncurses5-dev \ openssl \ libssl-dev \ fop \ xsltproc \ unixodbc-dev \ curl 

我正在运行docker build -t my-base:latest .

apt-get命令成功了一些时间,并没有改变任何东西,一些时候失败。 当我在本地开发机器上运行它时似乎总是成功,但是当我在EC2机器上运行它时经常失败(但并不总是)。 此外, apt-get install帮助之前,它似乎连续两次运行apt-get update 。 尽pipe如此,我对这两句话并不积极。

任何想法可能发生什么? apt-get中有什么东西可以caching时间戳,然后期待它是最新的?

这是一个你会更频繁地看到Docker镜像的问题,因为你正在访问的仓库经常变化,但是基础镜像(和它的caching的元数据)却不是。

尝试在安装软件包之前运行apt-get clean && apt-get update