Docker cannot find or access the image. The image name may be misspelled, the repository is private and requires authentication, or the image does not exist.
This error occurs when Docker cannot locate the requested image. Docker first checks locally, then attempts to pull from the configured registry (Docker Hub by default). The error indicates the image was not found locally AND the pull failed. The message "may require docker login" suggests the repository might be private, requiring authentication before Docker can access it.
Double-check the exact image name:
# Format: [registry/][namespace/]repository[:tag]
# Examples:
docker pull nginx # Docker Hub official
docker pull myuser/myapp # Docker Hub user repo
docker pull ghcr.io/owner/repo:v1 # GitHub Container Registry
docker pull myregistry.com/app:latestSearch Docker Hub to verify the image exists:
docker search <image_name>For private repositories, authenticate first:
# Docker Hub
docker login
# Other registries
docker login ghcr.io
docker login myregistry.azurecr.io
# With username
docker login -u myusernameEnter your password or access token when prompted.
Ensure you are pulling from the right registry:
# Docker Hub (default, no prefix needed)
docker pull nginx
# GitHub Container Registry
docker pull ghcr.io/owner/image
# Amazon ECR
docker pull 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp
# Google Container Registry
docker pull gcr.io/project-id/imageMissing the registry prefix causes Docker to look in Docker Hub.
Docker Hub limits anonymous pulls. Check your limit:
# Check remaining pulls (anonymous)
curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token | cut -d. -f2 | base64 -d | jq
# Or check headers during pull
TOKEN=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/nginx:pull" | jq -r .token)
curl -sI -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/library/nginx/manifests/latest | grep -i ratelimitLog in to increase limits or use a registry mirror.
If the image should exist locally from a build:
# List local images
docker images
# Build from Dockerfile
docker build -t myapp:latest .
# Tag for a registry
docker tag myapp:latest myregistry.com/myapp:latestIn docker-compose, ensure image names are correct:
services:
app:
# Use build if you have a Dockerfile
build: .
# OR use image if pulling
image: myregistry.com/myapp:latestRun docker-compose build if using build context.
Personal Access Tokens: Docker Hub now requires personal access tokens (PAT) instead of passwords for CLI login. Generate one at hub.docker.com/settings/security.
CI/CD Authentication: Store registry credentials as secrets:
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdinRegistry Mirrors: Configure mirrors in /etc/docker/daemon.json for faster pulls and to avoid rate limits:
{
"registry-mirrors": ["https://mirror.gcr.io"]
}image operating system "linux" cannot be used on this platform
How to fix 'image operating system linux cannot be used on this platform' in Docker
manifest unknown: manifest unknown
How to fix 'manifest unknown' in Docker
cannot open '/etc/passwd': Permission denied
How to fix 'cannot open: Permission denied' in Docker
Error response from daemon: failed to create the ipvlan port
How to fix 'failed to create the ipvlan port' in Docker
toomanyrequests: Rate exceeded for anonymous users
How to fix 'Rate exceeded for anonymous users' in Docker Hub