How to fix Error response from daemon: pull access denied for myimage, repository does not exist or may require 'docker login' in Docker

DockerBEGINNERLOWUpdated Dec 6, 2025ยท 556 views

The 'pull access denied' error occurs when Docker cannot download an image from a registry. This typically happens due to a typo in the image name, the image not existing on the registry, or authentication being required for a private repository.

Quick fix

Fixes Error response from daemon: pull access denied for myimage, repository does not exist or may require 'docker login'

# Search for the image on Docker Hub
docker search nginx

# Check available tags at hub.docker.com or use the API
# For example, visit: https://hub.docker.com/_/nginx/tags
  1. Verify the image name and tag exist
  2. Log in to Docker Hub or your private registry
  3. Use the fully qualified image name
  4. Build local images referenced in docker-compose.yml
docker โ€” error
# Search for the image on Docker Hub
docker search nginx
# Check available tags at hub.docker.com or use the API
# For example, visit: https://hub.docker.com/_/nginx/tags
Error response from daemon: pull access denied for myimage, repository does not exist or may require 'docker login'

What this error means

This error message indicates that the Docker daemon was unable to pull (download) the requested image from the container registry. Docker prints this error when one or more of the following conditions are met: 1. **The image name or tag is incorrect** - There may be a typo in the repository name, namespace, or tag 2. **The repository does not exist** - The image you're trying to pull has not been pushed to the registry 3. **Authentication is required** - The repository is private and you need to log in first 4. **Rate limiting** - You may have exceeded the registry's pull rate limit for anonymous or free-tier users The Docker daemon tries to find the image locally first. When it's not found, it attempts to pull from the default registry (Docker Hub) or a specified private registry. If any of the above conditions apply, this error is returned.

Typical symptoms

  • Docker pull commands fail with 'pull access denied' message
  • Docker run fails when the image is not available locally
  • Docker Compose fails during image pull phase
  • CI/CD pipelines fail at container image pull step
  • Error message mentions 'repository does not exist or may require docker login'

Common causes

  1. Typo in the image name (e.g., 'ngnix' instead of 'nginx', 'mongodb' instead of 'mongo')
  2. Missing namespace or incorrect repository path
  3. Image tag does not exist on the registry
  4. Repository is private and requires authentication
  5. Not logged in to Docker Hub or the private registry
  6. Using 'sudo docker pull' without having run 'sudo docker login'
  7. Docker Hub rate limit exceeded for anonymous pulls
  8. Local base image referenced in docker-compose.yml was not built
  9. Docker Hub free account repository limit exceeded

How to fix "Error response from daemon: pull access denied for myimage, repository does not exist or may require 'docker login'"

1Verify the image name and tag exist

First, confirm that the image name is spelled correctly and exists on Docker Hub or your target registry.

bash
# Search for the image on Docker Hub
docker search nginx

# Check available tags at hub.docker.com or use the API
# For example, visit: https://hub.docker.com/_/nginx/tags

Common naming mistakes:
- mongodb should be mongo
- ngnix should be nginx
- postgress should be postgres

If using a specific tag, verify the tag exists on the registry.

2Log in to Docker Hub or your private registry

If the repository requires authentication, log in before pulling:

bash
# Log in to Docker Hub
docker login

# Or log in to a private registry
docker login registry.example.com

Important: If you use sudo for Docker commands, you must also use sudo when logging in:

bash
sudo docker login
sudo docker pull myimage:tag

Your credentials are stored in ~/.docker/config.json (or /root/.docker/config.json when using sudo).

3Use the fully qualified image name

Always use the complete image path including the registry and namespace:

bash
# Instead of just the image name
docker pull myimage

# Use the full path
docker pull docker.io/myusername/myimage:tag

# For private registries, include the registry URL
docker pull registry.example.com/myproject/myimage:tag

For Docker Hub official images, the namespace is library:

bash
docker pull docker.io/library/nginx:latest
4Build local images referenced in docker-compose.yml

If your docker-compose.yml references images that should be built locally, build them first:

bash
# Build all images defined in docker-compose.yml
docker-compose build

# Or build a specific service
docker-compose build myservice

# Then start the services
docker-compose up

Check your docker-compose.yml for any image: references that point to local images rather than remote ones. These need a corresponding build: section or must be built separately.

5Check Docker Hub rate limits and account status

Docker Hub has rate limits for image pulls:
- Anonymous users: 100 pulls per 6 hours
- Authenticated free users: 200 pulls per 6 hours
- Paid subscriptions: Higher limits

To check your current rate limit status:

bash
# Get an auth token and check limits
TOKEN=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/alpine:pull" | jq -r .token)
curl -sI -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/library/alpine/manifests/latest | grep -i ratelimit

If rate limited, either:
1. Wait for the limit to reset (6 hours)
2. Log in to Docker Hub to get higher limits
3. Use a Docker Hub mirror or cache

6Reset Docker credentials

If you're still having issues after logging in, try resetting your Docker credentials:

bash
# Log out from Docker Hub
docker logout

# Or log out from a specific registry
docker logout registry.example.com

# Remove the credentials file (backup first if needed)
mv ~/.docker/config.json ~/.docker/config.json.backup

# Log in again
docker login

This clears any corrupted or outdated credentials that might be causing authentication failures.

Advanced notes

### Private Registry Authentication

For private registries other than Docker Hub, you may need to include the port in your login command:

bash
# If your image name includes a port
docker login registry.example.com:5000
docker pull registry.example.com:5000/myimage:tag

### GitHub Container Registry (GHCR)

For GitHub Container Registry, use a Personal Access Token (PAT):

bash
echo $GITHUB_PAT | docker login ghcr.io -u USERNAME --password-stdin
docker pull ghcr.io/owner/image:tag

### CI/CD Environments

In CI/CD pipelines, ensure credentials are properly configured:

yaml
# GitHub Actions example
- name: Login to Docker Hub
  uses: docker/login-action@v3
  with:
    username: ${{ secrets.DOCKERHUB_USERNAME }}
    password: ${{ secrets.DOCKERHUB_TOKEN }}

### Terms of Service Requirements

Some images (like Oracle Database) require you to accept terms of service on the registry website before pulling. Even with valid credentials, pulls will fail until you accept the terms through the web interface.

### Debugging Authentication Issues

Check where Docker is looking for credentials:

bash
cat ~/.docker/config.json

The auths section shows which registries have stored credentials. The credsStore field indicates if you're using a credential helper (like osxkeychain on macOS or wincred on Windows).

Frequently asked questions

What does "Error response from daemon: pull access denied for myimage, repository" mean?
This error message indicates that the Docker daemon was unable to pull (download) the requested image from the container registry. Docker prints this error when one or more of the following conditions are met: 1. The image name or tag is incorrect - There may be a typo in the repository name, namespace, or tag 2.
How do I fix "Error response from daemon: pull access denied for myimage, repository"?
The 'pull access denied' error occurs when Docker cannot download an image from a registry. This typically happens due to a typo in the image name, the image not existing on the registry, or authentication being required for a private repository.
What causes "Error response from daemon: pull access denied for myimage, repository"?
Typo in the image name (e.g., 'ngnix' instead of 'nginx', 'mongodb' instead of 'mongo') Missing namespace or incorrect repository path Image tag does not exist on the registry
Is the "Error response from daemon: pull access denied for myimage, repository" error serious?
It is a low-severity error โ€” more of a blocker than a risk. The steps above resolve it.

Official resources & further reading