Вопрос или проблема
У меня есть 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
Я изменил Dockerfile
на 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 и т.д. …
Ответ или решение
Да, существует образ Docker для CentOS, однако, его текущее состояние вызывает ряд проблем, особенно после недавних изменений в инфраструктуре CentOS. В этом ответе я быстро разберу ситуацию и предоставлю рекомендации для ее решения.
Проблема с доступом к образам CentOS
Судя по вашему описанию проблемы, вы столкнулись с ошибками при попытке построить Docker-образ на базе CentOS 7 и CentOS 8. Основная причина этого заключается в том, что вы не можете разрешить хост mirrorlist.centos.org
. Это может указывать на несколько проблем:
-
Проблема с DNS: Ваша система может не иметь корректных настроек DNS. Проверьте, правильно ли настроены DNS-серверы на вашей машине. Для этого вы можете использовать команду, которую вы уже упомянули, например, с использованием образа Alpine для проверки разрешения DNS:
docker run --rm -it alpine ping -c3 free.fr
Если разрешение DNS работает, вы получите ответ от сервера.
-
Состояние зеркал: Если проблема с DNS отсутствует, возможно, CentOS изменил свои зеркала или они временно недоступны. Проверка их статуса может помочь.
Образы CentOS в Docker
На данный момент, официальные образы CentOS действительно стали устаревшими, как вы указали в вашем обновлении. На странице Docker Hub для CentOS можно увидеть, что официальная сборка CentOS была помечена как "DEPRECATED". Это означает, что разработка и обновления для этих образов больше не поддерживаются, и есть вероятность, что они будут недоступны или содержать устаревшую информацию.
Альтернативы
-
Использование образов «Stream» или других дистрибутивов: Рассмотрите возможность использования CentOS Stream или других подобных дистрибутивов, таких как AlmaLinux или Rocky Linux, которые являются продолжателями CentOS. Образы этих дистрибутивов могут содержать более свежие пакеты и будут поддерживаться в будущем.
Например, для AlmaLinux:
FROM almalinux:8 RUN dnf install -y ca-certificates curl tree
-
Создание собственных репозиториев: Если вы хотите продолжать использовать CentOS, рассмотрите возможность создания локальных или прокси-репозиториев, чтобы избежать проблем с доступом к зеркалам в будущем.
-
*Настройка `/etc/yum.repos.d/CentOS-.repo`**: Если вашего файла репозитория нет, создайте его вручную, добавив правильные URL-адреса для зеркал сетевой загрузки.
Заключение
Образы CentOS для Docker продолжают существовать, но, учитывая их устаревание и текущее состояние репозиториев, рекомендуется перейти на другие, более современные альтернативы. Обязательно проверьте настройки вашей сети и DNS, чтобы избежать проблем при построении образов. Если проблемы сохраняются, стоит исследовать другие дистрибутивы или рассмотреть локальные репозитории.