How to fix Unable to find image locally. Error response from daemon: pull access denied for myapp, repository does not exist or may require docker login in Docker
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.
Quick fix
Fixes Unable to find image locally. Error response from daemon: pull access denied for myapp, repository does not exist or may require docker login
# 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:latest- Verify the image name and tag
- Log in to the registry
- Check if using correct registry
- Check for rate limiting
# Format: [registry/][namespace/]repository[:tag]# Examples:docker pull nginx # Docker Hub officialdocker pull myuser/myapp # Docker Hub user repodocker pull ghcr.io/owner/repo:v1 # GitHub Container Registrydocker pull myregistry.com/app:latestUnable to find image locally. Error response from daemon: pull access denied for myapp, repository does not exist or may require docker login
What this error means
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.
Typical symptoms
- docker run or docker pull fails with access denied
- Error appears after checking locally and attempting remote pull
- Image name with typos fails while correct name works
- Private repository images fail without authentication
- Works for public images but not private ones
Common causes
- Image name is misspelled or has wrong tag
- Image does not exist in the registry
- Repository is private and requires docker login
- Wrong registry specified (or missing registry prefix)
- Docker Hub rate limiting for anonymous pulls
- Network issues preventing access to registry
- Image was deleted from the registry
How to fix "Unable to find image locally. Error response from daemon: pull access denied for myapp, repository does not exist or may require docker login"
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.
Advanced notes
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"]
}Frequently asked questions
- What does "Unable to find image locally. Error response from daemon: pull access" mean?
- 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.
- How do I fix "Unable to find image locally. Error response from daemon: pull access"?
- 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.
- What causes "Unable to find image locally. Error response from daemon: pull access"?
- Image name is misspelled or has wrong tag Image does not exist in the registry Repository is private and requires docker login
- Is the "Unable to find image locally. Error response from daemon: pull access" error serious?
- It is a medium-severity error โ more of a blocker than a risk. The steps above resolve it.
Official resources & further reading
- ๐Docker Official Documentation
- ๐