精简版

Debian的httpredir.debian.org镜像服务导致我的Docker构建经常失败,因为apt-get无法下载软件包或连接到服务器或类似的东西。我是唯一有这个问题的人吗?是我的问题,是Debian还是Docker?有什么我可以做的吗?

长版

我有几个基于debian:jessie构建的Dockerfile,默认情况下,Debian在使用apt-get等时使用httpredir.debian.org服务来查找最佳镜像。几个月前,httpredir在尝试构建镜像时一直给我带来痛苦。当在Dockerfile中运行时,使用httpredir的apt-get几乎总是将一两个包弄乱了,整个构建都会失败。该错误通常看起来像是镜像已过时或以某种方式损坏。我最终通过添加以下行来停止在所有Dockerfile中使用httpredir:

# don't use httpredir.debian.org mirror as it's very unreliable
RUN echo deb http://ftp.us.debian.org/debian jessie main > /etc/apt/sources.list

今天回到了再次尝试httpredir.debian.org的原因,因为ftp.us.debian.org对于我需要的软件包已经过时了,并且可以肯定的是,它在Docker Hub上失败了:
Failed to fetch http://httpredir.debian.org/debian/pool/main/n/node-retry/node-retry_0.6.0-1_all.deb  Error reading from server. Remote end closed connection [IP: 128.31.0.66 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

这是我在这种情况下运行的apt-get命令,尽管我在许多其他情况下也遇到过:
RUN apt-get update && apt-get install -y \
  build-essential \
  chrpath \
  libssl-dev \
  libxft-dev \
  libfreetype6 \
  libfreetype6-dev \
  libfontconfig1 \
  libfontconfig1-dev \
  curl \
  bzip2 \
  nodejs \
  npm \
  git

感谢您的任何帮助,您可以提供。

最佳答案

今天,当我重建一段时间没有构建的Dockerfile时,我遇到了同样的问题。

apt-get install之前添加此行似乎可以解决问题:
RUN apt-get clean
在这里得到了这个主意:

  • https://github.com/docker/hub-feedback/issues/556
  • https://github.com/docker-library/buildpack-deps/issues/40
  • https://github.com/Silverlink/buildpack-deps/commit/be1f24eb136ba87b09b1dd09cc9a48707484b417
  • 关于docker - Debian httpredir镜像系统在Docker中不可靠/不可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35923576/

    10-16 16:49