CircleCI "pull access denied" / Docker Hub rate limit in CI
Pulling a Docker image failed: "pull access denied" means the image is private or misnamed, while "toomanyrequests" means Docker Hub throttled anonymous pulls. Authenticating fixes both classes.
What this error means
A pull fails with "Error response from daemon: pull access denied for X" or "toomanyrequests: You have reached your pull rate limit".
CircleCI
Error response from daemon: pull access denied for myorg/app, repository
does not exist or may require 'docker login': denied: requested access to
the resource is deniedCommon causes
The image is private or misnamed
Without credentials, a private repository looks non-existent and the daemon denies the pull.
Anonymous Docker Hub rate limit
Unauthenticated pulls share a low rate limit; busy CI exhausts it and gets "toomanyrequests".
How to fix it
Authenticate the image pull
- Store registry credentials in a context or env vars.
- Provide
authon the docker image entry. - Re-run so the pull is authenticated and not rate-limited.
.circleci/config.yml
jobs:
build:
docker:
- image: myorg/app:1.2.3
auth:
username: $DOCKERHUB_USER
password: $DOCKERHUB_PASSUse a mirror or pre-pulled base
Pull from an authenticated registry or a CircleCL image to avoid anonymous Hub limits.
How to prevent it
- Authenticate all image pulls in CI.
- Use a private registry or mirror for hot base images.
- Pin image tags so pulls are cacheable and predictable.
Related guides
CircleCI "Cannot connect to the Docker daemon" in CIFix CircleCI "Cannot connect to the Docker daemon at unix:///var/run/docker.sock" - docker commands ran in a…
CircleCI "Spin up environment ... failed" in CIFix CircleCI "Spin up environment" step failures - the executor image could not be pulled or the container fa…
CircleCI checkout "Permission denied (publickey)" in CIFix CircleCI checkout "git@github.com: Permission denied (publickey)" - the job's checkout/deploy key is miss…