Skip to content

fix: avoid Docker Hub rate limits using GHCR registry image#558

Merged
danbar2 merged 3 commits into
ai-dynamo:mainfrom
danbar2:use-ghcr-registry-image
Apr 28, 2026
Merged

fix: avoid Docker Hub rate limits using GHCR registry image#558
danbar2 merged 3 commits into
ai-dynamo:mainfrom
danbar2:use-ghcr-registry-image

Conversation

@danbar2

@danbar2 danbar2 commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Problem

E2E CI was failing intermittently with:

docker failed to pull image 'docker.io/library/registry:2': You have reached your unauthenticated pull rate limit.

When k3d creates its local registry container it pulls registry:2 from Docker Hub. The self-hosted runner hits the 100 pulls/6hr unauthenticated limit.

Solution

Pre-pull the equivalent image from GHCR before k3d runs and tag it as registry:2:

- name: Pull registry image from GHCR to avoid Docker Hub rate limits
  run: |
    docker pull ghcr.io/distribution/distribution:3.1.0
    docker tag ghcr.io/distribution/distribution:3.1.0 registry:2

ghcr.io/distribution/distribution is published by the same upstream project (distribution/distribution) and has no pull rate limits. When k3d runs, Docker finds registry:2 already cached locally and skips the Docker Hub pull entirely.

No secrets or credentials required.

Changes

  • e2e job: pre-pull ghcr.io/distribution/distribution:3.1.0 and tag as registry:2 before k3d runs

Closes #538

🤖 Generated with Claude Code

danbar2 and others added 3 commits April 28, 2026 12:24
…miting

Unauthenticated Docker Hub pulls are limited to 100/6hrs, causing
frequent CI failures when k3d pulls docker.io/library/registry:2
and when Dockerfiles pull golang base images.

Add docker/login-action to all CI jobs (test, build, check, e2e,
push-artifacts) using DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets.
This raises the pull rate to 200/6hrs.

Closes ai-dynamo#538

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update DOCKERHUB_USERNAME → DOCKERHUB_LOGIN_USER and
DOCKERHUB_TOKEN → DOCKERHUB_ACCESS_TOKEN to match the secret
names already configured in the GitHub organization.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…GHCR

The e2e self-hosted runner was hitting Docker Hub unauthenticated pull
rate limits when k3d pulled docker.io/library/registry:2 to create its
local registry container.

Instead of adding Docker Hub credentials, pre-pull the equivalent image
from GHCR (ghcr.io/distribution/distribution:3.1.0, published by the
same upstream project) and tag it as registry:2 before k3d runs. GHCR
has no pull rate limits for public images.

Also remove unnecessary Docker Hub login steps from test/build/check
jobs (no Docker pulls happen there) and from push-artifacts (GitHub-
hosted runners cache common base images).

Closes ai-dynamo#538

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@copy-pr-bot

copy-pr-bot Bot commented Apr 28, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@danbar2 danbar2 merged commit 08a75b6 into ai-dynamo:main Apr 28, 2026
45 of 46 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Missing Docker authentication in CI causes rate limiting

3 participants