精简版
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
在这里得到了这个主意:
关于docker - Debian httpredir镜像系统在Docker中不可靠/不可用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35923576/