This error occurs when the container registry cannot find the manifest for the requested image tag. Fix it by verifying the image name and tag exist in the registry, checking for typos, and ensuring proper authentication.
The "manifest unknown" error indicates that Docker or Kubernetes requested an image manifest from a container registry, but the registry has no manifest matching that reference. A manifest is the metadata file containing information about image layers, configuration, and tags—without it, the image cannot be pulled. This typically happens when you reference an image tag that doesn't exist, has been deleted, or contains a typo. The registry receives the request but cannot locate any manifest data for that specific image:tag combination. Common scenarios include misspelled tags (ubuntu:20.4 instead of 20.04), deleted images, deprecated repositories (jenkins:latest moved to jenkins/jenkins:lts), or authentication issues causing the registry to report "not found" instead of "unauthorized".
Check if the exact image:tag combination exists:
# Try pulling directly to see detailed error
docker pull ubuntu:22.04
# Use crane to verify without downloading
crane manifest docker.io/library/ubuntu:22.04 || echo "Tag does not exist"
# Check digest exists
crane digest ubuntu:22.04For Docker Hub images, verify on hub.docker.com by browsing to the repository's Tags tab.
Install and use crane for lightweight manifest inspection:
# Install crane (macOS)
brew install crane
# Verify image exists and get digest
crane digest ubuntu:22.04
# Output: sha256:1a...abc
# Inspect full manifest structure
crane manifest ubuntu:22.04
# For private registries with authentication
crane auth login myregistry.azurecr.io -u username -p password
crane manifest myregistry.azurecr.io/myimage:v1.0Crane checks existence without downloading the full image.
Skopeo provides detailed registry inspection:
# Install skopeo (Linux)
sudo apt-get install skopeo
# Inspect remote image
skopeo inspect docker://ubuntu:22.04
# For private registries
skopeo inspect --creds username:password \
docker://myregistry.azurecr.io/myimage:v1.0
# Check available architectures in manifest list
skopeo inspect --raw docker://ubuntu:22.04 | jq '.manifests[].platform'Skopeo doesn't require a Docker daemon and shows full multi-arch manifest details.
Common typos and corrections:
# Wrong
docker pull ubunt:22.04 # Misspelled 'ubuntu'
docker pull ubuntu:22.4 # Missing zero in version
docker pull nginx:latst # Misspelled 'latest'
# Correct
docker pull ubuntu:22.04
docker pull nginx:latestFull image reference format: registry/namespace/image:tag
Examples:
- Docker Hub official: ubuntu:22.04 or docker.io/library/ubuntu:22.04
- Docker Hub user: myuser/myapp:v1.0
- Private registry: myregistry.azurecr.io/myapp:latest
Some registries return "manifest unknown" instead of "unauthorized":
# Docker Hub
docker login
# Use personal access token, not password
# Azure Container Registry
az acr login --name myregistry
# GitHub Container Registry (use ghcr.io, not docker.pkg.github.com)
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
# Google Container Registry
gcloud auth configure-dockerVerify authentication:
cat ~/.docker/config.json | jq '.auths'If manifest was recently updated or you suspect cache issues:
# Remove local Docker cache
docker system prune -a
# Force fresh pull (no cache)
docker pull --disable-content-trust ubuntu:22.04
# For buildx multi-arch, disable attestations if causing issues
docker buildx build \
--platform linux/amd64,linux/arm64 \
--provenance false \
--sbom false \
-t myimage:v1.0 .Multi-Architecture Manifest Lists: A "manifest list" points to multiple platform-specific manifests. When you pull ubuntu:22.04, Docker fetches the manifest list, finds your platform (amd64/arm64), and downloads that specific variant. If your platform isn't in the list, you get "manifest unknown".
Schema Version Mismatches: Docker V2 Schema 1 (legacy) vs Schema 2 (current). Most registries default to Schema 2. Missing Accept headers can cause fallback issues—update Docker to latest.
Deprecated Registries: GitHub's old docker.pkg.github.com is deprecated; migrate to ghcr.io. Jenkins moved from jenkins:latest to jenkins/jenkins:lts.
Registry-Specific Issues:
- Docker Hub: Verify tag exists in web UI
- ACR: Check az acr repository show-tags
- GCR: Verify IAM permissions include artifactregistry.repositories.downloadArtifacts
- JFrog: Use full path including /artifactory/api/docker/
No subnets found for EKS cluster
How to fix "eks subnet not found" in Kubernetes
unable to compute replica count
How to fix "unable to compute replica count" in Kubernetes HPA
error: context not found
How to fix "error: context not found" in Kubernetes
default backend - 404
How to fix "default backend - 404" in Kubernetes Ingress
serviceaccount cannot list resource
How to fix "serviceaccount cannot list resource" in Kubernetes