GitHub Actions "Docker login rate limited" during a job
The registry throttled the runner with a rate-limit response while pulling or logging in, commonly anonymous Docker Hub pulls. On Latchkey managed runners, transient rate-limit failures are auto-retried and warm pools reduce repeat pulls of common base images.
What this error means
A docker login or image pull fails with a "too many requests" or rate-limit error from the registry.
github-actions
Error response from daemon: toomanyrequests: You have reached your pull rate limit.
##[error]Process completed with exit code 1.Common causes
Anonymous pulls hit the rate limit
Unauthenticated pulls from a shared egress IP exhaust the registry's anonymous rate budget.
No registry authentication configured
The job pulls without logging in, so it gets the lowest rate-limit tier.
How to fix it
Authenticate to raise the limit
- Log in to the registry with credentials stored as secrets before pulling.
- Prefer a mirror or your own registry for frequently pulled base images.
- Re-run; authenticated pulls have higher limits, and transient throttles are auto-retried.
.github/workflows/ci.yml
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- run: docker pull node:20-bookwormHow to prevent it
- Authenticate to registries to get higher pull-rate limits.
- Mirror or cache frequently used base images to avoid repeated remote pulls.
Related guides
GitHub Actions "Docker pull failed" for a job container imageFix the GitHub Actions error where the job container image cannot be pulled - bad tag, private registry, or a…
GitHub Actions setup action "Failed to download" (network)Fix the GitHub Actions error where a setup-* action fails to download a toolchain because of a transient netw…