Вопрос или проблема
Есть ли способ решить ошибку NOSPLIT в Docker?
Я хотел бы установить Debian с помощью Docker. Но хотя я смог запустить Docker ранее, мне не удалось запустить его сейчас. И когда я пытался скомпоновать свой Docker, выдает ошибку: ‘http://packages.sury.org/php buster InRelease подписанный файл недействителен, получено ‘NOSPLIT’ (требуется ли аутентификация сети?)’.. Можете предложить мне идею? У меня не так много опыта с Docker. Заранее спасибо..
FROM debian:buster-slim
WORKDIR /var/www/html/
ENV DEBIAN_FRONTEND noninteractive
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get dist-upgrade -y \
&& apt-get -y install apt-transport-https wget gnupg2
RUN wget -q http://packages.sury.org/php/apt.gpg -O- | apt-key add -
RUN echo "deb http://packages.sury.org/php/ buster main" | tee /etc/apt/sources.list.d/php.list
RUN apt-get update
Ответ или решение
Решение ошибки NOSPLIT в Docker
Ошибка NOSPLIT
, возникающая во время обновления пакетов в контейнере Docker, указывает на проблемную работу с сетью или доступ к ресурсам, которые требуют аутентификации. Вот несколько шагов для устранения данной ошибки при сборке контейнера на основе Debian Buster
.
Пошаговое решение:
-
Проверьте интернет-соединение:
Убедитесь, что ваш хост имеет стабильное и активное интернет-соединение. ОшибкаNOSPLIT
часто возникает в средах с нестабильным или ограниченным доступом к интернету. -
Файлы
sources.list
:
Проверьте содержимое вашего файла/etc/apt/sources.list
в контейнере. Убедитесь, что репозитории правильно указаны. Например, добавление репозиториев PHP должно будет выглядеть так:RUN echo "deb http://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list
Имейте в виду, что при добавлении
http
-ссылки, необходимо следить за правильным указанием версии дистрибутива. -
Обновление ключей GPG:
Ключи GPG могут быть устаревшими или неверными. Попробуйте выполнить следующие команды перед обновлением:RUN wget -qO - http://packages.sury.org/php/apt.gpg | apt-key add -
Убедитесь, что команда выполняется без ошибок.
-
Проверка конфигурации сети:
Попробуйте запустить Docker с флагом, который отключает использование DNS, если вы подозреваете, что это может быть причиной проблемы:docker run --dns 8.8.8.8 ...
-
Кэширование и очистка:
Убедитесь, что ваш Docker кэш обновлён, и попробуйте очистить предыдущие состояния сборки:docker builder prune
-
Запуск с использованием
--network host
:
Если ваша интеграция требует доступа к определённым ресурсам, попробуйте запустить контейнер с использованием сети хоста:docker build --network host -t my_image .
Пример полного Dockerfile
Ваш обновлённый Dockerfile может выглядеть следующим образом:
FROM debian:buster-slim
WORKDIR /var/www/html/
ENV DEBIAN_FRONTEND=noninteractive
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get dist-upgrade -y \
&& apt-get -y install apt-transport-https wget gnupg2 \
&& wget -qO - http://packages.sury.org/php/apt.gpg | apt-key add - \
&& echo "deb http://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list \
&& apt-get update \
&& apt-get install -y php
Заключение
После выполнения указанных шагов ошибка NOSPLIT
должна быть устранена. Если проблема сохраняется, обратитесь к системным администраторам или провайдеру связи для проверки возможных проблем с интернет-соединением.