Вопрос или проблема
У меня есть Dockerfile
, который раньше работал, но теперь я получаю ошибки.
Пример:
FROM centos:7
RUN yum install -y \
ca-certificates \
curl \
tree \
;
Когда я запускаю docker build -t image name .
, я получаю следующую ошибку:
Не удалось получить mirrorlist http://mirrorlist.centos.org/?release7&arch=x86_64
curl#6 - Не удалось разрешить хост: mirrorlist.centos.org; Неизвестная ошибка"
Не удается найти действительный baseurl для репозитория: base/7/x86_64
Я изменил Dockefile
на FROM centos:8
, но получаю аналогичную ошибку
Ошибка: не удалось загрузить метаданные для репозитория 'appstream': Не удается подготовить mirrorlist: ошибка Curl (6): Не удалось разрешить имя хоста для http://mirrorlist.centos.org
Машина, на которой я выполняю эту команду, имеет CentOS Stream версии 8
Гугля, я нашел этот пост, в котором упоминается обновление /etc/yum.repos.d/CentOS-*.repo
, но этого файла у меня нет. Что это за файл и нужно ли мне его создавать?
ОБНОВЛЕНИЕ:
Я вижу это: УСТАРЕВШИЙ; Официальная сборка CentOS.
Это означает, что больше нет образа Docker для CentOS?
Ваша проблема, похоже, связана с проблемой разрешения DNS.
Сначала проверьте этот момент.
docker run --rm -it alpine
ping -c3 free.fr
И посмотрите, что происходит.
Какова ваша ОС, версия, версия докера и т.д…
Ответ или решение
К сожалению, вы столкнулись с проблемами, связанными с использованием образов Docker на основе CentOS. Ваша ситуация исследования проблемы резонирует с изменениями, произошедшими в репозиториях CentOS и официальных образах Docker. Позвольте мне предложить детальный анализ вашей ситуации и возможные решения.
Проблема с разрешением доменов
Первоначальное сообщение об ошибке, которое вы получили:
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&arch=x86_64
curl#6 - Could not resolve host: mirrorlist.centos.org; Unknown error
указывает на проблемы с разрешением DNS имени mirrorlist.centos.org
. Это может быть вызвано несколькими факторами:
-
Проблемы с DNS-сервером: Проверьте, что ваша система может разрешать доменные имена. Попробуйте выполнить команду:
docker run --rm -it alpine ping -c3 mirrorlist.centos.org
Если она не может разрешить имя хоста, это подтверждает проблему с DNS.
-
Настройка Docker Network: Иногда проблема может заключаться в неправильной настройке сети Дока. Проверьте настройки вашего сетевого моста Docker, так как он может использовать другие DNS-серверы.
-
Проблемы с подключением к интернету: Убедитесь, что хост-система имеет доступ к интернету и может подключиться к внешним ресурсам.
Образы CentOS и их устаревание
Обращение к Docker Hub подтверждает, что официальный образ CentOS теперь считается устаревшим, и, по сути, его больше не поддерживают. Вместо него разработчики рекомендуют переключиться на образы, основанные на AlmaLinux или Rocky Linux, которые являются системами, совместимыми с RHEL.
Решения
-
Переключение на другой базовый образ:
Если вам не критично использование CentOS, рекомендую сменить базовый образ на AlmaLinux или Rocky Linux. Например, ваш Dockerfile может выглядеть следующим образом:FROM almalinux:8 RUN yum install -y \ ca-certificates \ curl \ tree
-
Создание пользовательских репозиториев:
Если вы все же планируете оставаться на CentOS, проверьте наличие нужных вам репозиториев. Возможно, вам потребуется создать файл/etc/yum.repos.d/CentOS-Base.repo
, добавив репозиторий с альтернативными зеркалами:[base] name=CentOS-$releasever - Base baseurl=http://mirror.centos.org/centos/8/baseos/x86_64/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centos8 [appstream] name=CentOS-$releasever - AppStream baseurl=http://mirror.centos.org/centos/8/appstream/x86_64/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centos8
-
Проверка доступности Docker и обновление:
Убедитесь, что у вас установлена последняя версия Docker. Выполните командуdocker --version
и проверьте, необходимо ли обновление.
Заключение
Все изменения и переходы между технологиями могут вызывать временные трудности. Однако, адаптация к новым образам и настройка репозиториев помогут вам поддерживать рабочие процессы с Docker. Если вам потребуются дополнительные разъяснения или помощь с миграцией, не стесняйтесь обращаться за помощью к сообществу или профессионалам, занимающимся поддержкой систем на базе Linux.