Docker

Private Docker Registry Hosting: 8 Options Compared (2026)

CloudRepo, Docker Hub, GitHub Container Registry, AWS ECR, Harbor, JFrog, Nexus, and Cloudsmith compared on real pricing, format support, and honest trade-offs for private Docker registry hosting.

CloudRepo Team
13 min read
Last updated: September 8, 2026

Yes, CloudRepo hosts private Docker registries. It’s an OCI Distribution Spec (Docker Registry HTTP API V2) registry that works with docker, podman, nerdctl, Buildah, Kaniko, and Skopeo, alongside CloudRepo’s Maven, npm, and PyPI repositories in the same account. We’re mentioning that up front because it’s a fair question. Docker support is one of the newer additions to the platform, and if you’ve only known CloudRepo as a Maven or npm host, it’s easy to have missed it.

That said, “does it support Docker” is the easy question. The harder one is which private registry actually fits your team, and that depends on what you’re optimizing for: cost predictability, format breadth, self-hosting control, or staying inside an ecosystem you already pay for.

This guide compares eight private Docker registry options with real published pricing, honest pros and cons, and a section on when CloudRepo is the wrong choice. If a competitor genuinely fits your situation better, we’d rather tell you that than pretend otherwise.

Quick Comparison: Private Docker Registry Options at a Glance

Option Starting Price Pricing Model Other Formats Besides Docker/OCI
CloudRepo $199/month Flat, storage + transfer allowance Maven, npm, PyPI
Docker Hub (private) $9/month (Pro) Per-user, storage/pulls fair-use None (Docker/OCI only)
GitHub Container Registry Free (containers) Free storage + bandwidth, for now Via GitHub Packages (metered)
AWS ECR Pay-per-use $0.10/GB storage + tiered egress None (container/OCI only)
Harbor (self-hosted) Free (license) You pay for infrastructure and ops None (container/OCI only)
JFrog Artifactory $150/month Consumption: storage + transfer, tiered Maven, npm, PyPI, and 20+ more
Sonatype Nexus $135/month (Pro Cloud) Consumption: storage + egress Maven, npm, PyPI, and more
Cloudsmith $149/month Storage + delivery, $1.50/GB overage 28+ formats

Info

“Multi-format” matters more for Docker registries than it sounds. If you’re already hosting Maven or npm artifacts somewhere, a Docker-only registry is a second vendor, a second bill, and a second set of credentials to manage. That’s not automatically wrong, but it’s a real cost most comparison pages skip.

Now the details, in the order you’re likely evaluating them.


Docker Hub

What it is: The default container registry most teams already have an account on. Docker Hub is Docker Inc.’s own registry, and it’s where most public base images (nginx, postgres, node, etc.) actually live.

Pricing:

Plan Price Private Repos Storage/Pulls
Personal Free 1 200 pulls / 6 hours (authenticated)
Pro $9/month billed annually ($11 monthly) Unlimited (fair use) Unlimited (fair use)
Team $15/user/month billed annually ($16 monthly), up to 100 users Unlimited (fair use) Unlimited (fair use)
Business $24/user/month, 5-seat minimum Unlimited (fair use) Unlimited (fair use)

Anonymous, unauthenticated pulls are limited to 100 per 6-hour window per IP, which is the limit that occasionally breaks a shared CI runner or office network with no warning.

The catch: “Unlimited (fair use)” on the paid plans has no published GB or pull-count ceiling. That’s good until it isn’t. It also means Docker Hub’s pricing doesn’t scale with your usage at all, which cuts both ways: predictable for a CI-heavy team, but you’re paying full seat price even if half your seats barely touch the registry.

Best for: Teams that need a private spot for a handful of images and want the registry everyone already knows how to use. Not a fit if you also need Maven, npm, or PyPI hosting, or if seat-based pricing doesn’t match how your team is actually organized (contractors, service accounts, CI-only “users”).

Pros:

  • Zero setup if your team already has Docker Hub accounts
  • No storage or bandwidth metering on paid plans
  • Business tier adds SSO, SCIM, and centralized image/registry access management
  • Universally supported by every container tool without configuration

Cons:

  • Docker/OCI only, no other artifact formats
  • Seat-based pricing doesn’t reflect actual usage
  • “Fair use” limits exist but aren’t published as numbers
  • Business tier requires a 5-seat minimum even for smaller teams that want SSO

Website: docker.com/pricing


GitHub Container Registry (GHCR)

What it is: GitHub’s OCI registry at ghcr.io, tied to your GitHub identity and permissions rather than a separate account system.

Pricing:

As of this writing, GitHub’s own billing documentation states it plainly: “Container image storage and bandwidth for the Container registry is currently free,” with at least one month’s advance notice before that changes. This is different from GitHub Packages’ general quota table (npm, Maven, NuGet, RubyGems), which is metered by plan:

Plan Package Storage Data Transfer/Month
GitHub Free 500 MB 1 GB
GitHub Pro 2 GB 10 GB
GitHub Team 2 GB 10 GB
GitHub Enterprise Cloud 50 GB 100 GB

Those limits don’t apply to container images today. They apply to everything else GitHub Packages hosts.

The catch: “Currently free” is doing real work in that sentence. GitHub reserves the right to start billing containers with 30 days’ notice, and storage is shared with your GitHub Actions artifact storage for the non-container formats. If you’re hosting production images there because it’s free, you’re one policy announcement away from a bill you didn’t plan for.

Best for: Teams already living inside GitHub Actions who only need container hosting and are comfortable with GitHub’s identity and permission model doing double duty as registry access control.

Pros:

  • Genuinely free container storage and bandwidth right now
  • No separate account or credential system; uses existing GitHub permissions
  • Tight GitHub Actions integration (GITHUB_TOKEN can push and pull directly)
  • Public images are free and unlimited, permanently

Cons:

  • Free container pricing is a current policy, not a contractual guarantee
  • Access control is coupled to GitHub repo/org permissions, which is powerful but inflexible if you need registry-only tokens
  • No dedicated support tier beyond your GitHub plan’s support
  • Other formats (npm, Maven, NuGet) are metered separately and share a small storage quota

Website: docs.github.com/packages


AWS ECR (Elastic Container Registry)

What it is: Amazon’s managed container registry, billed at close to wholesale infrastructure cost and built for IAM-based access control inside AWS.

Pricing:

Resource Price
Private repository storage $0.10/GB per month
Public repository storage Free, up to 50 GB/month
Data transfer out to the internet Standard AWS tiers: first 100 GB/month free, then $0.09/GB (up to 10 TB)
Same-region transfer to EC2, ECS, EKS, Lambda, Fargate, App Runner Free
New account free tier 500 MB private storage free for 12 months

Why this matters: That same-region-free line is the whole story for AWS-native shops. If your CI/CD pulls images from EKS or ECS in the same region as your registry, which is the normal setup, your transfer cost is often zero regardless of volume. The only real bill is storage at $0.10/GB, plus whatever genuinely leaves AWS to the public internet.

Best for: Teams already running compute on AWS who want the lowest possible registry cost and are comfortable configuring IAM policies instead of a separate credential system.

Pros:

  • Near-wholesale storage pricing
  • Free same-region transfer to AWS compute, which covers most real CI/CD pull traffic
  • Native IAM integration, no separate access-token system to manage
  • No published pull-rate limit like Docker Hub’s

Cons:

  • Docker/OCI only, no Maven, npm, or PyPI hosting
  • Requires AWS IAM expertise to configure correctly; a misconfigured policy is a common source of “why can’t CI pull this image” tickets
  • No advanced repository features like Docker group repositories or Helm-alongside-images conventions beyond what OCI itself gives you
  • AWS lock-in, since the free same-region transfer only applies inside AWS

Website: aws.amazon.com/ecr/pricing


Harbor (Self-Hosted)

What it is: A CNCF graduated, open-source (Apache 2.0) container registry you run yourself. Harbor adds RBAC, vulnerability scanning (bundled Trivy), replication between registries, retention policies, and Helm chart support over OCI on top of a standard registry.

Pricing:

There’s no vendor price to quote. Harbor’s license is free. What you pay for is the infrastructure and the operational time. Harbor’s own installation docs publish hardware requirements directly:

Deployment CPU Memory Disk
Minimum 2 CPU 4 GB 40 GB
Recommended 4 CPU 8 GB 160 GB

That’s on top of the PostgreSQL database, Redis, and object storage (or filesystem) backend Harbor needs to run, plus a real TLS certificate (Docker refuses to push to an insecure registry by default). None of that is exotic infrastructure, but none of it is free either, and someone on your team owns patching, upgrades, backups, and the 2 a.m. page when the database fills the disk.

The honest comparison point: at high transfer volumes, Harbor’s cost genuinely doesn’t move, because nothing is metered. That’s the real argument for it, not “it’s free.”

Best for: Teams with existing Kubernetes/ops muscle, air-gapped or regulated environments where self-hosting isn’t optional, or platform teams whose transfer volume would make any metered vendor expensive.

Pros:

  • No license cost, and cost doesn’t scale with storage or transfer
  • Full feature set: RBAC, vulnerability scanning, replication, retention policies, robot accounts
  • Runs anywhere, including fully air-gapped
  • Helm charts over OCI, same as CloudRepo’s and Docker Hub’s approach

Cons:

  • You own the database, Redis, TLS certificates, backups, and upgrades
  • No vendor support line; you’re on GitHub issues and community Slack when something breaks
  • Initial setup and ongoing maintenance require real operational investment
  • High availability is possible but is its own project, not a checkbox

Website: goharbor.io


JFrog Artifactory

What it is: The market-leading repository manager, and Docker/OCI is just one of the 20+ formats it hosts alongside Maven, npm, PyPI, and more. If you need one platform for every artifact type your org produces, this is the incumbent.

Pricing: Artifactory bills storage and transfer together as a single “consumption” metric, starting at $150/month for 25 GB combined, then tiered from $1.25/GB down to $0.75/GB at volume. We’ve published the full JFrog Artifactory pricing breakdown with the tier math; the short version is that Docker’s transfer-heavy usage pattern (CI pulling the same base images repeatedly) tends to land teams in the expensive $1.25/GB tier fast, since pulls count against consumption the same as everything else.

Best for: Organizations that need one platform across many formats, want JFrog’s broader DevOps ecosystem (Xray scanning, Pipelines, distribution), and have the budget and consumption-pricing tolerance to match.

Pros:

  • Broadest format support of any option here
  • Mature platform with deep enterprise features (HA, multi-region replication, RBAC)
  • Well-documented, widely known by ops teams already

Cons:

  • Consumption pricing punishes exactly the usage pattern Docker registries generate: frequent, repeated pulls
  • Self-hosted Pro X starts at $27,000/year before infrastructure
  • Feature-rich platform means paying for capabilities a Docker-only or small multi-format team won’t use

Website: jfrog.com


Sonatype Nexus Repository

What it is: The long-standing open-source-and-commercial repository manager. Nexus OSS is free and self-hosted; Nexus Pro adds SSO, HA clustering, staging, and either per-user self-hosted licensing or consumption-based cloud pricing.

Pricing: Nexus Pro Cloud starts around $135/month for 20 GB combined storage and egress, billed at $0.90 to $1.10/GB past that. Self-hosted Pro runs roughly $120/user/year instead. We cover the full breakdown, including the free-OSS total-cost-of-ownership math, in our Sonatype Nexus pricing guide. For Docker hosting specifically, Nexus supports hosted, proxy, and group Docker repositories on the same instance as your other formats, under the same consumption pricing.

Best for: Teams with existing Nexus expertise, or those who specifically need the free OSS tier and are willing to self-host and maintain it.

Pros:

  • Free OSS tier genuinely works for teams willing to run their own infrastructure
  • Multi-format (Maven, npm, PyPI, Docker, and more) on one instance
  • Mature Docker proxy and group repository support

Cons:

  • Same consumption-pricing exposure to CI/CD pull volume as JFrog
  • OSS tier has no SSO, HA, or staging; those require Pro
  • UI and operational experience feel dated next to newer options

Website: sonatype.com


Cloudsmith

What it is: A cloud-native, multi-format package management platform supporting 28+ formats, including Docker/OCI, with a modern UI and API-first design.

Pricing:

Plan Base Price Storage Included Delivery Included Overage
Open Source Free 50 GB 200 GB N/A (public + OSS license required)
Core Free 500 MB 1 GB Hard limit, no overage
Pro $149/month 5 GB 25 GB $1.50/GB, storage and delivery
Ultra/Enterprise Custom Custom Custom Custom

We break down the full model, including how the $1.50/GB overage compounds, in our Cloudsmith pricing guide. For Docker specifically: the included amounts on Pro (5 GB storage, 25 GB delivery) are small relative to typical image sizes and CI pull volume, so a team hosting production containers on Pro is likely to see meaningful overage charges within the first billing cycle.

Best for: Teams that need many formats beyond what CloudRepo or Docker-specific vendors cover (28+ vs. CloudRepo’s 4), and whose usage stays inside plan limits or can absorb metered overage.

Pros:

  • Widest format support after JFrog
  • Modern UI and API, good CLI tooling
  • Free Open Source tier is genuinely generous (50 GB / 200 GB) for public projects

Cons:

  • Included storage and delivery on Pro are small for container workloads specifically
  • $1.50/GB overage on both storage and delivery adds up fast under CI/CD load
  • Smaller, newer company than JFrog or Sonatype

Website: cloudsmith.com


CloudRepo

What it is: A managed, multi-format repository (Maven, npm, PyPI, and Docker/OCI) with flat, predictable pricing instead of per-GB consumption billing. Docker hosting is the standard Registry HTTP API V2, so docker, podman, nerdctl, Buildah, Kaniko, and Skopeo all connect with nothing beyond a normal docker login.

What’s actually there for Docker:

  • Hosted Docker/OCI repositories, public or private per repository
  • Repository-scoped tokens instead of portal-password logins; each token can be revoked independently
  • Group repositories: one address that resolves across several member repositories in a priority order you set, read-only, with each member’s permissions still enforced
  • Helm charts stored as OCI artifacts in the same Docker repository (no separate Helm repository type, no index.yaml to maintain)

What’s honestly not there yet: no Docker Hub pull-through proxy/mirroring (CloudRepo’s Docker proxy repositories exist but don’t handle upstream images carrying attestation manifests, which is most current Docker Hub images, so we don’t advertise it as working), and no image vulnerability scanning. If either of those is a hard requirement today, Harbor or JFrog cover them; CloudRepo doesn’t yet.

Pricing:

Plan Price Storage Transfer Allowance Users
Starter $199/month 50 GB 1 TB/month Unlimited
Team $499/month 250 GB 3 TB/month Unlimited
Business $799/month 1 TB 6 TB/month Unlimited
Scale $1,199/month 2 TB 12 TB/month Unlimited
Enterprise Custom Custom Custom Unlimited

Prices shown are the annual-effective monthly rate; monthly billing runs about 20% higher. Every plan includes unlimited users and repositories, encryption in transit and at rest, and support from engineers who use the product. Transfer is not unmetered: each tier publishes an explicit monthly allowance, and sustained overage is billed at $120/TB, always rounded down in your favor, with no automatic charges and no throttled builds. We reach out first if you’re consistently over.

The Scale tier exists specifically for Docker-heavy platform teams: 12 TB of transfer is built for CI/CD that pulls base images constantly, which is the usage pattern that makes consumption-priced competitors expensive.

Best for: Teams hosting Docker images alongside Maven, npm, or PyPI artifacts who want one flat-priced account instead of a per-format vendor and per-GB consumption metering, and who don’t currently need image scanning or Docker Hub pull-through caching.

Pros:

  • Multi-format: Docker sits alongside Maven, npm, and PyPI in one account, one bill
  • Flat pricing with a published transfer allowance, not per-GB metering
  • No consumption penalty for CI/CD pulling the same base images repeatedly
  • Repository tokens and group repositories without extra product tiers
  • Support from real engineers, not a ticket queue

Cons:

  • No Docker Hub pull-through proxy for images with attestation manifests
  • No image vulnerability scanning
  • Cloud-only; no self-hosted or air-gapped option
  • Newer to Docker hosting specifically than JFrog, Nexus, or Harbor

Website: cloudrepo.io/docker

Important

CloudRepo offers a 14-day free trial with no credit card required, so you can push real images through before committing.


Real-World Cost Scenarios

Docker registries have a different usage shape than Maven or npm repositories: storage stays relatively small, but transfer is large, because every CI run pulls base images all over again. These scenarios are sized for that pattern.

Scenario A: 5 developers, 30 GB image storage, 300 GB pulls/month

OptionMonthly CostNotes
CloudRepo Starter$199Flat, fits within the 1 TB allowance
AWS ECR~$21Cheapest if same-region transfer applies; higher if pulls go to the internet
GitHub Container Registry$0Containers only, currently free, policy can change
Docker Hub Team (5 seats)$75Docker/OCI only, no metering either way
Harbor (self-hosted)$0 licensePlus infrastructure and your ops time
Sonatype Nexus Pro Cloud~$476Consumption pricing on combined storage + egress
JFrog Artifactory Pro~$531Consumption pricing on combined storage + egress
Cloudsmith Pro~$599Small included amounts trigger overage fast

Scenario B: 20 developers, 150 GB image storage, 3 TB pulls/month

OptionMonthly CostNotes
CloudRepo Team$499Flat, fits within the 3 TB allowance exactly
AWS ECR~$276Assumes internet egress; often less if same-region to AWS compute
GitHub Container Registry$0Containers only, currently free
Docker Hub Team (20 seats)$300Docker/OCI only
Harbor (self-hosted)$0 licensePlus infrastructure and your ops time
Sonatype Nexus Pro Cloud~$3,152Consumption pricing scales hard with pull volume
JFrog Artifactory Pro~$3,288Consumption pricing scales hard with pull volume
Cloudsmith Pro~$4,829$1.50/GB overage on both storage and delivery

Tip

Notice what happens between Scenario A and B: the consumption-priced options (Nexus, JFrog, Cloudsmith) scale roughly with pull volume, because that’s the model. AWS ECR and Docker Hub barely move, for different reasons: ECR because same-region transfer is free and storage is cheap per GB, Docker Hub because it doesn’t meter usage at all. CloudRepo sits in between: flat within the allowance, with a published (not hidden) overage rate if you blow past it.


When NOT to Choose CloudRepo

Honesty is the point of this section, not a disclaimer to get through.

Choose AWS ECR if you’re all-in on AWS. If your CI/CD runs on EKS, ECS, or Lambda in the same region as your registry, same-region transfer is free and storage is $0.10/GB. That’s very hard to beat, and fighting it with a flat-priced vendor doesn’t make sense if you’re already paying for AWS everywhere else. The trade-off is IAM complexity and no Maven/npm/PyPI hosting alongside it, but if you don’t need those, ECR is the right call.

Choose Harbor if you’re a DIY ops team, or you’re air-gapped. If you already run Kubernetes clusters and have the operational muscle to run Postgres, Redis, and TLS certs for other services, Harbor’s marginal cost is close to zero and nothing is metered no matter how much your CI pulls. If you’re in a regulated or air-gapped environment where self-hosting isn’t a choice, Harbor is genuinely the right tool, not a compromise.

Choose GitHub Container Registry if you live entirely in GitHub Actions and only need containers. Free is free, and if your workflow is already GitHub-native, the identity/permissions coupling is a feature, not a bug. Just build in the possibility that “currently free” becomes “billed” someday, with 30 days’ notice.

Choose Docker Hub if you only need Docker, and seat pricing fits your team shape better than usage pricing. If you’re not hosting Maven, npm, or PyPI anywhere that a combined vendor would help with, and your team is a stable set of named seats rather than a pile of CI service accounts, Docker Hub’s unmetered paid tiers are straightforward.

Choose JFrog or Nexus if you need one platform across many formats and enterprise depth (HA, advanced RBAC, security scanning) that CloudRepo doesn’t have yet, and your budget and usage pattern can tolerate consumption pricing.

CloudRepo’s honest pitch is narrower than any of those: multi-format hosting (Docker plus Maven, npm, PyPI) on one flat-priced account, for teams that don’t currently need image scanning, Docker Hub pull-through caching, or self-hosting. If that’s not your situation, one of the options above probably fits better, and we’d rather you know that before you sign up than after.


Migration: Moving to a New Docker Registry

Switching Docker registries is mostly a client-side change, not a data-migration project, because the OCI spec is the same everywhere:

  1. Create the new registry and credentials - a repository, and a token or login credential
  2. Re-tag and push existing images - docker pull from the old registry, docker tag to the new address, docker push; there’s no bulk “migrate” button because there doesn’t need to be one
  3. Update CI/CD pipeline configs - change the registry host in your build and deploy configs, and rotate the credential CI uses
  4. Cut over gradually - keep pushing to both registries during a transition window if you want a rollback path, then stop pushing to the old one
  5. Decommission the old registry - once nothing pulls from it anymore

Tip

Most teams complete a Docker registry migration in an afternoon. The image data itself is portable by design; the real work is updating references in CI/CD configs and any Kubernetes manifests that pin a registry hostname.


The Bottom Line

There’s no universally correct private Docker registry. AWS ECR wins on pure cost if you’re already on AWS. Harbor wins on control if you have the ops team to run it. Docker Hub wins on simplicity if Docker is all you need. GitHub Container Registry wins on price today if you’re GitHub-native, with a caveat about tomorrow.

CloudRepo’s case is for teams who don’t want a separate Docker vendor at all: one flat-priced account that hosts Docker images next to Maven, npm, and PyPI artifacts, with a published transfer allowance instead of a per-GB meter that punishes CI/CD for doing its job.

Ready to Try CloudRepo’s Docker Hosting?

  1. Start a free 14-day trial - no credit card required, push a real image and see what it costs at your actual usage.
  2. Read the Docker setup guide - three commands from docker login to a pulled image.
  3. Book a call with the founder - tell us your format mix and usage pattern, and we’ll tell you honestly whether we’re a fit.

Frequently Asked Questions

Does CloudRepo support Docker?

Yes. CloudRepo hosts private Docker/OCI registries on the standard Registry HTTP API V2, alongside Maven, npm, and PyPI repositories in the same account. It works with docker, podman, nerdctl, Buildah, Kaniko, and Skopeo without any plugin or proprietary client.

What formats does CloudRepo support besides Docker?

Maven, npm, PyPI (Python), and Docker/OCI. Helm charts are supported as OCI artifacts stored inside a Docker repository, not as a separate repository type.

Is GitHub Container Registry really free?

Container image storage and bandwidth on ghcr.io are free today, per GitHub’s own billing documentation, with a commitment to at least 30 days’ notice before that changes. Other package formats under GitHub Packages (npm, Maven, NuGet) are metered separately by plan and are not covered by that free-container policy.

Is AWS ECR cheaper than a managed registry?

Often, if you’re already running compute on AWS in the same region as your registry, since that transfer is free and storage is $0.10/GB. It gets less clear-cut once meaningful traffic leaves AWS to the public internet, and ECR doesn’t host Maven, npm, or PyPI artifacts alongside your images the way a multi-format registry does.

Do I need a separate tool for Helm charts?

Not if your registry supports Helm-over-OCI, which CloudRepo, Docker Hub, Harbor, AWS ECR, and JFrog all do. Helm 3 stores charts as OCI artifacts, so they push and pull from a normal Docker/OCI repository with helm push oci://... and helm pull oci://..., no separate chart repository or index.yaml.

Ready for flat, predictable repository hosting?

Join the teams who've switched to CloudRepo for better pricing and features.