Skip to main content

Docker Hub's Pro Tier Jumped 80%, Team 67%: The Break-Even Math for Running Your Own Registry

9 min readDora NodaDora Noda
Share
On this page

Docker Hub's Pro tier now costs $9 a month, up from $5. Team costs $15, up from $9. Those increases — 80% and 67% — took effect on renewal for every existing customer, and they're the pricing every team building on top of Docker Hub still pays today. The free tier lost ground at the same time: a single private repository capped at 2GB, one Docker Scout repo instead of three, and zero included Build Cloud minutes.

None of that is news anymore. What's still worth doing is the math nobody ran: at what team size does a $15-per-seat registry subscription actually cost more than just running the registry yourself? The answer is uncomfortable for Docker Hub — a single Hetzner box running Harbor undercuts even one paid Team seat, and the gap only widens as headcount grows. Here's the worked comparison, plus the operational costs a "just self-host it" pitch usually leaves out.

What Actually Changed on Docker Hub

Docker's November 2024 repricing is the pricing structure still in effect today. It bundled two separate moves — a subscription price hike and a free-tier trim — that are worth separating because they hit different teams differently.

Subscription prices, per user per month:

PlanOld priceNew priceChange
Personal (free)$0$0
Pro$5$9+80%
Team$9$15+67%
Business$24$24unchanged

Free-tier trims, same announcement:

  • Private repositories: capped at 1 repo, 2GB storage (previously more generous)
  • Docker Scout: 1 repo scanned for free, down from 3
  • Build Cloud: 0 included minutes on the free plan
  • Pull rate: 100 pulls/6 hours for anonymous users, 200 pulls/6 hours for authenticated free accounts — a limit Docker has held flat rather than tightening further

The one piece of the original plan Docker walked back: consumption-based billing for pulls and storage, originally slated to roll out in 2025, was scrapped in February 2025 after pushback. Paid tiers (Pro, Team, Business) instead got unlimited pull rate with no throttling and no per-pull charge, as of April 2025. So the actual shape of Docker Hub's pricing today is a flat per-seat subscription plus a firm (not metered) rate limit on the free tier — not the usage-based model that was floated and then abandoned.

Why Docker Needed the Increase

Docker's repricing didn't happen in a vacuum. Docker Hub serves an enormous volume of pulls — most of them free, unauthenticated, and from infrastructure Docker has to run and pay for regardless of whether the puller ever converts to a paying account. The company has been explicit that free-tier usage was subsidized by paid accounts, and that subsidy got harder to sustain as pull volume kept climbing. Raising Pro and Team prices while trimming free-tier storage and scan allowances is the straightforward lever: push more of the actual cost of running Docker Hub's infrastructure onto the accounts that are already paying for it, rather than spreading it further across accounts that aren't.

That's a defensible business decision on Docker's side of the ledger. It's also exactly the kind of decision a team building its own infrastructure never has to make about its own registry — there's no cross-subsidy to rebalance when the registry serves one team's own image traffic instead of the entire internet's.

The Worked Recompute: Team Subscription vs. Self-Hosted Harbor

Team is the plan a growing engineering org actually lands on — it's the tier with per-seat pricing that scales with headcount, which is exactly the variable this recompute needs to be honest about.

Docker Team, at $15/seat/month:

Team sizeMonthlyAnnual
5 seats$75$900
20 seats$300$3,600

Self-hosted Harbor on owned Hetzner hardware, sized to Harbor's own minimum spec (2 vCPU / 4GB / 40GB) plus object storage for image layers as the registry grows past local disk:

ComponentSpecMonthly (post-June-2026 Hetzner pricing)
ComputeHetzner CX23 (2 vCPU / 4GB / 40GB)€5.49 (~$6.30)
Registry storageHetzner Object Storage, 1TB included€4.99 (~$5.99)
Total$12.29/mo ($147/yr)

That total doesn't change with headcount — it's the same box and the same storage bucket whether five developers push images to it or fifty, because Harbor's RBAC is project-based access control, not a per-seat license. Stacked against the Team subscription:

Team sizeDocker Team/yrSelf-hosted Harbor/yrSavings
5 seats$900$147$753 (84%)
20 seats$3,600$147–$189*$3,411–$3,453 (95–96%)

*A 20-developer team pushing enough image traffic to want more headroom can step up to a CX33 (4 vCPU / 8GB, ~$9.75/mo) — total ~$189/yr, still a rounding error against $3,600.

The break-even point is the number worth sitting with: at $180/year per seat, Harbor's flat ~$147–189/year cost is already cheaper than a single Docker Team seat. This isn't a "self-hosting wins once you're big enough" story — the crossover happens before the first seat is even paid for. What that really means is that Team's per-seat pricing is charging for something other than raw registry storage: SSO/RBAC tooling, audit logs, Build Cloud minutes, and Docker Scout's hosted vulnerability database, bundled into a price that scales with people rather than usage.

What Harbor Actually Costs You Operationally

The recompute above is honest about dollars, but a $12/month registry isn't actually free — it's free of a subscription fee, not free of operational work. Running Harbor yourself means owning:

  • TLS and a real FQDN. Harbor needs a certificate and DNS entry before docker push will work against it; Docker Hub's TLS is invisible because it's already done.
  • Upgrades. Harbor ships regular releases with security fixes. Docker Hub's control plane patches itself; a self-hosted Harbor instance patches on your schedule, which means it patches on nobody's schedule if nobody owns it.
  • Vulnerability scanning configuration. Harbor bundles Trivy for image scanning — feature parity with Docker Scout, but it has to be enabled and its policies configured, not toggled on by default.
  • Backup of the registry storage. Object storage is durable, but "durable" isn't "backed up against a bad harbor.yml change" — that's still a runbook someone writes.

None of these are hard problems, and Harbor is a CNCF-graduated project specifically because thousands of teams have already solved them. But they're real hours, and the honest comparison isn't "$147/year vs $900/year" — it's "$147/year plus some ongoing ops time vs. $900/year with zero ops time." For a team that already runs a Cluster API-managed Kubernetes fleet for its own apps, Harbor is one more Helm chart on infrastructure that already exists and already gets patched. For a team with no Kubernetes footprint at all, standing up Harbor purely to save on registry costs is a much weaker trade.

The caveat that matters most: self-hosting your own registry replaces Docker Hub as the place your team's own images live. It does not replace Docker Hub as the source of the public base images — node:22, postgres:17, nginx:alpine — that every Dockerfile still starts FROM. Those pulls still hit Docker Hub, and they're still subject to its rate limits, unless a team also configures Harbor's pull-through proxy cache in front of Docker Hub. That's not a footnote — for a CI/CD pipeline running dozens of builds a day, each one pulling a handful of base images, the 200-pulls-per-6-hours free-tier limit is a more immediate operational pain than the per-seat subscription price. A pull-through cache solves both problems in the same move: it takes registry storage off Docker Hub's per-seat plan and takes CI traffic off Docker Hub's rate limit, since the cache serves repeat pulls of the same base image from local storage instead of hitting Docker Hub again.

Where the Line Actually Sits

This math doesn't argue that every team should tear out Docker Hub tomorrow. It argues for a specific, narrow trigger:

  • Solo developers and small teams on the free tier who fit inside 1 private repo and 2GB storage have nothing to recompute — there's no subscription to replace, and standing up Harbor to save $0/month isn't a project.
  • Teams paying for Pro because they need more than one private repo, but not because they need org-wide RBAC, are closer to the margin — Pro at $9/month is already close to Harbor's flat cost, and the operational lift of self-hosting may not be worth it for a single developer.
  • Teams paying for Team or Business — anyone with more than one paid seat — are the ones this recompute is actually for. That's the point past which per-seat pricing has already exceeded the flat cost of owning the registry outright, and Harbor's project-based RBAC is a genuine like-for-like replacement for what the subscription was buying.

The pattern here isn't unique to container registries. It's the same shape as every other per-seat SaaS bill next to a flat, owned alternative: the subscription price scales with a variable — people — that has nothing to do with the actual resource being consumed, while the owned box's cost is pinned to the resource itself.

A self-hosted registry is exactly the kind of infrastructure a git-push platform needs to own, not rent — bex.co is the open-source, AI-native Render alternative built on that same principle: push a git repo, get a running HTTPS service on machines you own, no per-seat meter running underneath it. Star the repo on GitHub or deploy your first app today.

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex