Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
manifest-unknown Linux / DevOps

Docker Error: manifest for image not found: manifest unknown — Решение

Обновлено: 19.08.2026  ·  Официальная база знаний

Архитектура Docker Registry v2 и структура OCI-манифестов

Ошибка Error response from daemon: manifest for image:tag not found: manifest unknown возвращается реестром контейнеров (Docker Hub, GitHub Packages, GitLab Registry, Harbor) при попытке выполнить docker pull или docker run. Причиной является отсутствие запрашиваемого тега (tag) в репозитории, отсутствие манифеста для целевой процессорной архитектуры хоста (например, сборка существует только для linux/amd64, а запрос идет с linux/arm64 Apple Silicon), либо удаление образа по политике ретеншена реестра.

Бизнес-риски:

Остановка пайплайнов автоматического тестирования и деплоя (CI/CD), падение масштабирования узлов Kubernetes при rolling update и срыв релизов ПО.

Таблица компонентов манифеста OCI/Docker

КомпонентТип медиа (MIME)Назначение
Fat Manifest / Indexapplication/vnd.oci.image.index.v1+jsonСписок архитектурных манифестов для разных платформ (Multi-arch).
Image Manifestapplication/vnd.docker.distribution.manifest.v2+jsonКонфигурация слоев конкретной платформы (OS/Arch).
Config DigestSHA256 HashУникальный идентификатор содержимого и переменных окружения образа.

Пошаговая диагностика и устранение проблемы манифеста

Сценарий 1: Проверка доступных тегов в удаленном реестре

Убедитесь в правильности написания тега. Тег latest часто отсутствует у специализированных образов:

# Проверка тегов официального репозитория через curl (пример с Docker Hub API):
curl -s 'https://registry.hub.docker.com/v2/repositories/library/postgres/tags/' | jq -r '.results[].name'

# Попытка скачать образ с явным указанием конкретной версии вместо latest:
docker pull postgres:15.4-alpine

Сценарий 2: Принудительное указание процессорной архитектуры (--platform)

Если образ собран только под архитектуру x86_64 (AMD64), а запуск выполняется на Apple M1/M2/M3 или ARM-сервере:

# Принудительная эмуляция через QEMU с флагом --platform
docker pull --platform linux/amd64 <image_name>:<tag>

# Запуск контейнера в режиме эмуляции:
docker run --platform linux/amd64 -d <image_name>:<tag>

Сценарий 3: Сборка и публикация Multi-Arch образа через buildx

Для разработчиков: создание кроссплатформенного манифеста для устранения ошибки у пользователей:

# Инициализация buildx builder
docker buildx create --use --name multiarch-builder

# Сборка и публикация образа сразу для двух платформ (amd64 и arm64)
docker buildx build --platform linux/amd64,linux/arm64 -t username/my-app:1.0.0 --push .

Типовые ошибки администраторов

  • Использование неявного тега 'latest': Во многих production-образах (например, Bitnami, RedHat UBI) тег latest удален ради безопасности. Всегда указывайте строгие семантические версии (например, :1.24-alpine).
  • Опечатки в имени репозитория или организации: Проверьте регистр букв. Реестры Docker чувствительны к регистру (case-sensitive).
Пайплайны CI/CD падают из-за несовместимости манифестов и архитектур?
ITSTM построит отказоустойчивые Multi-Arch конвейеры сборки и внедрит надежное приватное хранилище артефактов Harbor.
Практический опыт инженера: Всегда фиксируйте базовые образы в production Dockerfile не по тегу, а по Digest SHA256. Это гарантирует неизменяемость сборки (immutability) и защиту от внезапного удаления тега в upstream-реестре.

Частые вопросы (FAQ)

Почему один и тот же образ качается на сервере, но падает на Mac M1?

Образ был собран без поддержки архитектуры ARM64. Используйте флаг '--platform linux/amd64' для запуска через транслятор Rosetta 2/QEMU.

Что означает статус 'manifest unknown' в приватном Harbor/Nexus?

Это означает, что образ с таким тегом был удален сборщиком мусора (Garbage Collector) или тег еще не был отправлен командой docker push.

Как скачать образ по SHA256 хэшу, если тег поврежден?

Используйте синтаксис digest: docker pull myimage@sha256:45b23d064c0dd5337e83033e122f217709828ec350cb7299c0b234d1a789da21.

Как проверить, какие архитектуры поддерживает удаленный образ?

Используйте команду: docker buildx imagetools inspect <image_name>:<tag>.