{
  "id": "cicd/docker-pull-rate-limit",
  "signature": "toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits",
  "signature_zh": "请求过多：您已达到拉取速率限制。您可以通过身份验证和升级来提高限制：https://www.docker.com/increase-rate-limits",
  "regex": "toomanyrequests.*pull rate limit",
  "domain": "cicd",
  "category": "resource_error",
  "subcategory": null,
  "root_cause": "Docker Hub pull rate limit exceeded (anonymous users: 100 pulls/6 hours, authenticated free users: 200 pulls/6 hours) due to high CI frequency or shared IP addresses.",
  "root_cause_type": "generic",
  "root_cause_zh": "Docker Hub拉取速率限制已超出（匿名用户：每6小时100次拉取，已认证免费用户：每6小时200次拉取），原因是CI频率过高或共享IP地址。",
  "versions": [
    {
      "version": "Docker 24.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Docker 25.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Docker 26.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "Passive waiting delays CI pipelines and doesn't solve the root cause; the limit will be hit again on the next build.",
      "fail_rate": 0.8,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "Changing platform doesn't bypass rate limits; each pull still counts against the same quota regardless of platform.",
      "fail_rate": 0.95,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Authenticate Docker Hub in CI: use 'docker login -u $DOCKER_USER -p $DOCKER_PAT' to increase the limit to 200 pulls/6 hours for free accounts or unlimited for Pro/Team accounts.",
      "success_rate": 0.9,
      "how": "Authenticate Docker Hub in CI: use 'docker login -u $DOCKER_USER -p $DOCKER_PAT' to increase the limit to 200 pulls/6 hours for free accounts or unlimited for Pro/Team accounts.",
      "condition": "",
      "sources": []
    },
    {
      "action": "Use a mirror registry like 'registry-mirror.example.com' or switch to Amazon ECR/GCR to avoid Docker Hub limits entirely. Example: 'docker pull registry-mirror.example.com/library/node:18'",
      "success_rate": 0.95,
      "how": "Use a mirror registry like 'registry-mirror.example.com' or switch to Amazon ECR/GCR to avoid Docker Hub limits entirely. Example: 'docker pull registry-mirror.example.com/library/node:18'",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Authenticate Docker Hub in CI: use 'docker login -u $DOCKER_USER -p $DOCKER_PAT' to increase the limit to 200 pulls/6 hours for free accounts or unlimited for Pro/Team accounts.",
    "Use a mirror registry like 'registry-mirror.example.com' or switch to Amazon ECR/GCR to avoid Docker Hub limits entirely. Example: 'docker pull registry-mirror.example.com/library/node:18'"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://docs.docker.com/docker-hub/download-rate-limit/",
  "official_doc_section": null,
  "error_code": "DOCKER_PULL_RATE_LIMIT",
  "verification_tier": "ai_generated",
  "confidence": 0.9,
  "fix_success_rate": 0.85,
  "resolvable": "true",
  "first_seen": "2023-03-01",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}