Зеркальная система Debian httpredir ненадежна / непригодна для использования в Docker?
Укороченная версия
Debian-х httpredir.debian.org
Служба зеркала вызывает сбой моих сборок Docker, потому что apt-get не может загрузить пакет или подключиться к серверу или тому подобному. Единственная ли у меня эта проблема? Проблема моя, Debian или Docker? Что я могу с этим поделать?
Длинная версия
У меня есть несколько Dockerfiles, построенных на debian:jessie
и Debian по умолчанию использует httpredir.debian.org
сервис по поиску лучшего зеркала при использовании apt-get и т. д. Несколько месяцев назад httpredir постоянно мучил меня, пытаясь создать образы. При запуске внутри Dockerfile, apt-get с использованием httpredir почти всегда портит один или два пакета, и вся сборка завершается ошибкой. Ошибка обычно выглядела так, будто зеркало устарело или каким-то образом повреждено. В конце концов я прекратил использовать httpredir во всех моих файлах Docker, добавив следующие строки:
# 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
Спасибо за любую помощь, которую вы можете предоставить.
2 ответа
У меня была такая же проблема сегодня, когда я перестраивал Dockerfile, который я не собирал некоторое время.
Добавление этой строки перед apt-get install
кажется, делает трюк:
RUN apt-get clean
Есть идея здесь:
Из обсуждения этого вопроса и моего опыта многократного решения этой проблемы в течение нескольких месяцев, apt-get clean
кажется, что это само по себе не помогает, но тот факт, что вы перестраиваете (то есть httpredir обычно выбирает другое зеркало) заставляет его работать. Действительно, без исключения ручной запуск перестройки или двух привел к успешной сборке.
Это, очевидно, не жизнеспособное решение, хотя. Так что нет, у меня нет решения, но у меня также недостаточно репутации, чтобы пометить его как дубликат.