api-get “Error reading from server” di bawah Docker

14

Saya menjalankan perintah berikut di 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

Itu berjalan, tetapi gagal di tengah:

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]

Dan karena itu seluruh operasi gagal dengan kesalahan

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?

Saya menjalankan ini sebagai bagian dari bangunan Docker. Dockerfile saya membaca

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

dan aku berlari docker build -t my-base:latest .

The apt-getperintah berhasil beberapa waktu, dan gagal beberapa waktu tanpa saya memiliki sesuatu berubah. Ini tampaknya selalu berhasil ketika saya jalankan di mesin pengembangan lokal saya tetapi gagal sering (tapi tidak selalu!) Ketika saya jalankan di mesin EC2. Selanjutnya, sepertinya berjalan apt-get updatedua kali berturut-turut sebelum apt-get installbantuan. Saya sama sekali tidak positif dari dua kalimat terakhir itu.

Ada ide apa yang bisa terjadi? Mungkinkah ada sesuatu di apt-get yang caching cap waktu dan kemudian berharap itu menjadi terkini?

Nathaniel Waisbrot
sumber

Jawaban:

22

Ini adalah masalah yang akan Anda lihat lebih sering dengan gambar Docker karena repositori yang Anda akses sering berubah tetapi gambar dasar (dan itu adalah metadata yang di-cache) tidak.

Coba jalankan apt-get clean && apt-get updatesebelum Anda menginstal paket.

James Yale
sumber