#Как выглядит неисправность
Ошибка скачивания зависимостей при docker build может возникать на этапе RUN npm/pip/apt или при загрузке базового образа FROM: это разные сети и разные учётные данные. Начинайте с точного шага ошибки.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Не скачан базовый образСбой при FROM, запросе к реестру | Ошибки manifest unknown, 401, timeout | Проверить тег, доступ к registry и авторизацию |
| Сбой в RUN при установке пакетаВнутри сборочного контейнера нет DNS/прокси или пакет недоступен | Ошибка pip/npm/apt на конкретном слое | Проверить источник пакета и прокси сборки |
#Пошаговое устранение
- 1. Получите полный журнал проблемного шагаВ терминале каталога проекта на тестовой машине выполните docker build --progress=plain -t local-diagnostic:test ., проверьте последнюю строку с ошибкой. Замечание: сборка может исполнять команды Dockerfile и скачивать пакеты, делайте её только с доверенным проектом.Linux · Терминал (Bash)С осторожностьюПроводит тестовую сборку и может расходовать сеть, место и исполнять команды Dockerfile.
docker build --progress=plain -t local-diagnostic:test .Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 2. Отделите сбой FROM от сбоя RUNНайдите в журнале «load metadata for»/«pull access denied» либо номер инструкции RUN. При ошибке FROM проверьте имя образа и тег в Dockerfile; при RUN — версию менеджера пакетов и конкретный URL, а не настройки всего демона.
- 3. Проверьте доступ к реестру с хостаДля базового образа выполните docker pull ОБРАЗ:ТЕГ только после проверки, что этот образ разрешён и указан в Dockerfile. При 401/403 проверьте права и срок действия учётных данных, при 404 — тег; при timeout — DNS/маршрут.Linux · Терминал (Bash)С осторожностьюПодставьте утверждённое имя/тег; скачивает образ и занимает место.
docker pull ОБРАЗ:ТЕГКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 4. Проверьте версию и адрес зависимостиОткройте Dockerfile и lock-файл проекта (package-lock.json, requirements.txt и др.). Найдите версию пакета, которую устанавливает сбойный шаг. Ошибка package not found требует проверки имени/версии, а не переустановки Docker.
- 5. Сравните сеть сборки и хостаЕсли хост может разрешить имя сервера пакетов, а сборка нет, проверьте корпоративный прокси, VPN и BuildKit-конфигурацию. Передайте прокси штатным механизмом сборки по правилам безопасности, не храня пароль в Dockerfile.
- 6. Повторите один диагностический запускПосле исправления прокси, тега или lock-файла повторите docker build --progress=plain с отдельным диагностическим тегом. Если сборка дошла дальше, проверьте новые строки и запустите тестовую копию приложения; не объявляйте успех только по скачиванию.
- 7. Проверьте исходный образ и итогСравните docker image inspect созданного образа с ожидаемой архитектурой и тестируйте запуск в отдельном окружении. Если сообщение осталось прежним, сохраните обезличенный лог и обратитесь к владельцу реестра или сетевому администратору.
#Как проверить результат
Сборка завершается без ошибки, зависимость имеет ожидаемую версию, тестовый образ запускается. При ошибке авторизации отключение TLS не является допустимым решением.
#Если проблема осталась
Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.