api-get «Erreur de lecture du serveur» sous Docker

14

J'exécute la commande suivante dans 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

Il s'exécute, mais échoue au milieu:

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]

Et donc toute l'opération échoue avec l'erreur

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?

J'exécute cela dans le cadre d'une build Docker. Mon Dockerfile lit

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

et je cours docker build -t my-base:latest .

La apt-getcommande réussit une partie du temps et échoue une partie du temps sans que j'aie rien changé. Il semble toujours réussir lorsque je l'exécute sur ma machine de développement locale mais échoue souvent (mais pas toujours!) Lorsque je l'exécute sur une machine EC2. De plus, il semble que courir apt-get updatedeux fois de suite avant les apt-get installaides. Je ne suis cependant pas du tout positif de ces deux dernières phrases.

Des idées ce qui pourrait arriver? Pourrait-il y avoir quelque chose dans apt-get qui met en cache un horodatage et s'attend à ce qu'il soit à jour?

Nathaniel Waisbrot
la source

Réponses:

22

C'est un problème que vous verrez plus fréquemment avec les images Docker car les référentiels auxquels vous accédez changent fréquemment, mais pas l'image de base (et ses métadonnées mises en cache).

Essayez de lancer apt-get clean && apt-get updateavant d'installer des packages.

James Yale
la source