Docker Hub vs Harbor

Docker Hub is the lower-effort choice for teams fine with hosted pull limits and vendor-run storage. Harbor fits teams that need registry data, identity and pull capacity inside their own infrastructure.

On this page

Docker Hub vs Harbor: when a self-hosted registry is the right move

A self-hosted Harbor registry is the right move when you need to own where images live, who can reach them and how much pull capacity you have. Teams that only push a few private images and pull public base images within normal limits will usually find Docker Hub simpler to run, and a hosted service removes patching and storage work entirely. The question is less about which product is better and more about which of your constraints is now binding, usually one of the five drivers below. Work through them in order before you price anything. The decision turns on five things. First, pull volume: count pulls per hour from your CI runners and clusters, grouped by egress IP, because Docker Hub's unauthenticated limit of 100 pulls per 6 hours per IPv4 address or IPv6 /64 subnet is shared by everything behind that address. Second, data location: confirm whether image contents, tags and metadata may leave your network or your chosen cloud region. Third, identity model: check whether the SSO you need is available on your current Docker plan, and compare it with Harbor's LDAP/AD and OIDC support. Fourth, scanning needs: decide whether you need Docker Scout's hosted analysis or Harbor's built-in Trivy scanning, which runs inside your environment. Fifth, team capacity: name the people who will upgrade, back up and restore Harbor, since its database and cache components change between releases.

Ask Docker for the exact plan features that gate SSO, private repository counts and Scout access, and get the answer in writing with the date. Then ask your platform team to estimate, from real logs, the peak pull rate and the number of engineers available for on-call and upgrades. If pull volume is the only pressure, a Harbor proxy cache may be enough and a full migration unnecessary. If data location or identity is the pressure, plan for Harbor as the system of record and treat Docker Hub as a replication source during transition. Either way, run a short pilot with one project and one pipeline before committing.

Which registry fits which scenario

This table maps common Docker Hub situations to the registry that usually fits better, and the condition that decides it. Read each row against your own pull volume, data rules and network layout, since the better fit depends on those conditions rather than on the team's size alone. Docker Hub remains a sound choice for many teams that pull modest volumes of public images.

ScenarioBetter fitCondition that drives the choice
CI fleets hitting pull limitsHarbor proxy cache, or a paid Docker planDocker counts unauthenticated pulls per IPv4 address or IPv6 /64 subnet, so shared NAT egress drives the limit. A Harbor proxy cache inside your network reduces upstream pulls, and its HEAD checks do not trigger the Docker Hub rate limiter.
Regulated private imagesSelf-hosted HarborChoose Harbor when image contents, scan results and audit logs must stay in your own environment. Confirm with your assessor which controls they expect to see evidenced for the registry.
Air-gapped clustersSelf-hosted Harbor from the offline installerChoose Harbor when clusters have no Internet route. Images arrive through Skopeo or replication via a transfer host, which a hosted registry cannot serve.
Small teams with few private repositoriesDocker HubA hosted registry with modest private repository needs may cost less in engineer time than running Harbor. Compare the per-user plan limits in Docker's current pricing with the operations work Harbor adds.
Multi-cloud or hybrid estatesSelf-hosted Harbor with replicationChoose Harbor when images must move between clouds, data centers and Docker Hub. Replication endpoints cover Docker Hub, other Harbor instances and major cloud registries, so confirm the exact endpoint types you need.
Teams needing SSO for every userDepends on plan and identity providerConfirm whether your Docker plan includes the SSO you require. Harbor supports LDAP, AD and OIDC single sign-on, so check that your identity provider fits those protocols.
Pulling public base images at scaleHarbor proxy cache for Docker HubProxy cache serves the cached copy if the upstream is unreachable and applies a default 7-day retention policy, which you can change to match your update cycle.

Where registry data lives and who controls access

Moving from Docker Hub to Harbor changes where image layers, tags, access records and audit trails physically sit and who can change them. The cards below cover the decisions that follow from that change, and what your organization must produce when an assessor asks how registry data is controlled.

Where image data is stored

Docker Hub stores repositories in Docker's hosted service, so you rely on Docker's location, retention and deletion terms. A self-hosted Harbor registry stores layers and charts on storage you choose, whether that is a cloud account, a data center or an air-gapped network. Confirm the region, the storage backend, and who holds the keys to encrypt that storage before you move any production images.

Identity and SSO scope

Docker Hub single sign-on and team roles are tied to the plan you buy, so the identity provider you can use is set by the vendor. Harbor supports LDAP/AD and OIDC single sign-on and role-based projects inside your own identity estate. Map each Docker Hub team to a Harbor project role and confirm that offboarding removes access in your directory, not in a second system.

Audit log ownership

Audit records for Docker Hub actions live in Docker's console and export under Docker's terms. Harbor writes audit logs on the instance you run, so you decide retention, where logs are forwarded and who can read them. Ask Docker which audit events and retention periods your plan includes, and decide where Harbor logs will be stored and who reviews them.

Vendor and subprocessor evidence

With Docker Hub, your assessment includes Docker as a service provider, so you request its security documentation, subprocessor list and contract terms. With Harbor, the processor is your own team or your implementation partner, and the evidence is your change records, access reviews and backup tests. Collect the Docker documents that still apply during any parallel running period.

Compliance evidence you produce

DeployOpen prepares controls, configurations and evidence for a compliance assessment, but independent auditors and certification bodies issue the reports. For Harbor, expect to produce access reviews, role mappings, backup and restore records, upgrade approvals and scanner policy settings. Agree with your auditor in advance which of these they will sample and in what format.

Who administers the registry

Docker Hub is administered by Docker and by your organization's account owners. A Harbor instance adds system administrators, database operators and storage owners, all of whom can alter access or delete data. Define these roles in writing, restrict administrator accounts to named people, and log their changes outside the registry so one administrator cannot erase the record of their own actions.

How Docker Hub pull limits change CI and cluster design

Docker Hub's documented pull limits decide how CI and Kubernetes clusters should fetch images, because the counter is kept per source address rather than per job. Unauthenticated pulls are limited to 100 per 6 hours per IPv4 address or IPv6 /64 subnet, and Docker Personal accounts get 200 per 6 hours, according to the Docker Hub pull usage and limits documentation. When a CI fleet or a cluster egresses through one NAT gateway, every runner and node shares that single address, so a busy pipeline can exhaust the quota for the whole fleet and cause pulls to fail with rate limit errors that look unrelated to the build.

A Harbor proxy cache project changes where those pulls originate. Harbor checks whether a cached image is still current with HEAD requests, and its documentation states that these checks do not trigger the Docker Hub rate limiter, so only the first fetch of each image and changed upstream content consumes upstream pulls. Design the cluster so that nodes and runners point at the Harbor endpoint rather than Docker Hub, and keep the proxy cache's upstream credentials scoped to a dedicated account. Before relying on this pattern, confirm your own upstream limits and quotas with Docker, since the figures above describe unauthenticated and Personal plan use and your contract may differ.

Paid Docker plans remain relevant even with a cache in place. A cache does not create pull capacity for images Harbor has never fetched, and it does not cover workloads that pull directly from Docker Hub outside the cache path. Ask Docker which account type and limits apply to the service account Harbor uses, and map every CI runner, node pool and developer workstation to either the cache or a documented exception. That inventory tells you whether a paid subscription is still needed for the residual direct pulls.

Questions buyers ask before switching from Docker Hub

What does it cost to run a self-hosted Harbor registry?

Harbor's software is free under Apache-2.0, so the cost is the infrastructure and the people who run it. The main components are compute and storage for the registry, a PostgreSQL database and a cache layer, backups, and the engineer time spent on installs, upgrades, scanning and monitoring. Docker Hub costs are subscription fees per user, plus any paid plan features your teams need. Cost rises with image volume, the number of replicated copies, retention length, high availability requirements and how many clusters pull from it. Ask any implementation partner for a quote built from a written scope that lists each of these components, separating one-time setup from recurring operations. For a side-by-side view, see the cost comparison page.

How long does a migration from Docker Hub to Harbor take?

The pace depends on the scope more than on Harbor itself. The variables are the number of repositories and tags, how many CI pipelines and Kubernetes clusters pull images, whether pull secrets and build configuration must change, how many teams need a cutover window, and whether you run both registries in parallel for a period. Registering Docker Hub as a replication source, setting name and tag filters and enabling proxy cache for public images are quick configuration steps. Validation, repointing workloads and rollback planning take most of the effort. Ask for a timeline that is tied to a written inventory of repositories and consumers, not a generic estimate.

Can an internal platform team run Harbor without outside help?

Yes, many teams do, provided they have Kubernetes or Linux operations skills, PostgreSQL experience and a clear owner for certificates, storage and backups. Harbor's installation prerequisites, offline installer and Helm-based high availability deployment are documented, so the work is learnable. The harder parts are sizing storage and garbage collection, designing replication and retention policies, wiring OIDC or LDAP into your identity provider, and planning upgrades across breaking changes. An outside partner can take any of these as a fixed-scope piece while your team keeps operational control. Be honest about the skills gap before deciding.

What does Harbor need from the team after go-live?

Harbor needs a regular upgrade routine, tested backups and continuing security work. Recent releases show why. Harbor v2.15.2 upgrades the bundled internal database from PostgreSQL 15 to PostgreSQL 18 on container startup and replaces Redis with Valkey as the cache backend, and its release notes recommend a backup before upgrading and a reindexdb run if index problems appear. Harbor v2.15.3 introduced breaking changes, including blocking webhooks to internal network addresses by default and failing signing of unsigned images in projects that enforce content trust. Plan for reviewing release notes before each upgrade, keeping vulnerability scanning current (Harbor bundles Trivy, and you can connect an external Trivy instance), testing restores, and monitoring disk use. Your team or a retainer partner should own this calendar.

Can Harbor fully replace every Docker Hub feature we use?

Harbor covers the core registry needs: private projects, role-based access control, OIDC and LDAP/AD single sign-on, vulnerability scanning, garbage collection, audit logs, a REST API, replication and proxy cache. It stores container images and Helm charts as OCI artifacts. It does not reproduce Docker Hub's hosted services, such as its public image library, managed build features or vendor-run security dashboards, so confirm each feature your teams rely on. Docker Scout is a Docker product, and Harbor's equivalent is Trivy-based scanning. Verify the scanning depth, policy enforcement and reporting you need against Harbor's vulnerability scanning documentation before you commit. Public base images can still be pulled through a proxy cache project.

What does a fixed-scope DeployOpen engagement cover for Harbor?

A fixed-scope engagement covers the work agreed in writing before it starts: planning the architecture, installing and hardening Harbor in your cloud account, data center or air-gapped network, configuring projects, replication, proxy cache and identity integration, migrating agreed repositories, documenting runbooks, and handing over. DeployOpen also prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports or certifications, which independent auditors and certification bodies do. Ongoing upgrades, backups and continuous testing can be added as a retainer. Scope, deliverables and timelines are set out in the written statement of work, and a quote follows from that scope. DeployOpen does not publish a price list.

Should we keep a paid Docker plan while we run Harbor?

Often yes, for a transition period or for specific features. Keeping a paid Docker plan can cover developers who still use Docker Desktop features, hosted services your teams rely on, or a fallback during cutover. Harbor replaces the registry role, so the decision depends on which Docker features you still use and how long you expect to run both. Compare the per-user subscription against your Harbor operations cost, and set an exit date for each Docker feature. Ask for a written list of features in use before deciding.

What moving from Docker Hub to Harbor involves

The sequence moves repositories, tags and pull access from Docker Hub to a Harbor registry you run, with both registries serving traffic until every consumer has switched and the old pull paths can be retired.

  1. Inventory repositories, tags and consumers

    Your team lists every Docker Hub namespace, repository and tag the organization depends on, then maps which CI pipelines, Kubernetes clusters, build hosts and developers pull each one. Docker's Hub API can list repositories for an account, but confirm the exact listing method and token scope in Docker's documentation for your account type. Done means you have a written list that separates your private images, your own public images and third-party base images, with an owner for each group.

  2. Install Harbor in your own environment

    Your platform or infrastructure team deploys Harbor using the online installer, the offline installer for networks without Internet access, or the Harbor Helm chart on a Kubernetes cluster. The installation prerequisites page lists the host, database and storage requirements that apply, and the Harbor 2.15 line changed its bundled database and cache, so check the release notes before choosing a version. Done means the Harbor web interface and API answer over TLS on the hostname your clients will use, and an administrator can log in.

  3. Configure projects, identity and scanning

    Create Harbor projects that mirror your namespaces, set role-based access, and connect LDAP, Active Directory or OIDC single sign-on so people and robot accounts use existing identities. Decide whether Trivy scanning is enabled at install time or connected to an external Trivy instance, and set which projects block vulnerable images from being pulled. Done means a test user can push and pull within the right project only, and a scan of a test image produces a result in the Harbor interface.

  4. Set up replication and proxy cache

    Register Docker Hub as a replication endpoint and create pull-based rules that copy the repositories and tags you chose, filtering by name and tag so you do not copy everything. For public base images that CI pulls often, create a proxy cache project for Docker Hub so builds read from Harbor, and note that the cache is read-only for pushes and keeps a default 7-day retention policy unless you change it. Done means a replication run completes with matching tags, and a pull through the proxy cache project succeeds from a build host.

  5. Copy and verify images with Skopeo

    Where replication does not fit, such as one-off copies or transfers through a staging host, use Skopeo to copy images between registries without needing root privileges, including multi-architecture manifests where the tool supports them. Your team should confirm the exact commands, credentials handling and sequence for its estate before running them at scale. Done means digests of copied images match between Docker Hub and Harbor for a sample of repositories, and signatures or SBOMs attached to the originals are present where they should be.

  6. Repoint CI and Kubernetes pull secrets

    Update image references in pipelines, Helm values and manifests to the Harbor hostname, then replace Docker Hub credentials in CI variables and Kubernetes image pull secrets with Harbor robot accounts scoped to the required projects. Change one pipeline or namespace at a time and keep a list of what changed for rollback. Done means a deployment in each environment pulls from Harbor, and no workload still references a Docker Hub image unless you have decided to keep it on purpose.

  7. Run both registries during cutover

    Keep Docker Hub available while Harbor serves production pulls, and watch pull failures, scan results and replication lag during the overlap. Keep the replication rules running so new tags reach Harbor until every consumer has switched. Done means your monitoring shows no workloads failing to pull and your team has signed off each consumer group on a checklist.

  8. Decommission Docker Hub access

    Once no consumer depends on Docker Hub, revoke the access tokens and CI credentials that pointed at it, stop replication jobs you no longer need, and decide with your legal and licensing contacts what happens to paid Docker subscriptions. Keep a final export of the repositories and tags for records. Done means a documented list of retired credentials, a stopped replication schedule and a signed record that the Docker Hub dependency is closed.

What Harbor adds to your operating workload

On the Docker side, the recurring cost is the subscription itself, billed per user and tied to the plan that unlocks features such as SSO and advanced controls. Confirm the current per-seat prices and which features each Docker plan includes directly with Docker, because those terms change and this page does not state them. On the Harbor side, there is no license fee, but the bill moves to your own infrastructure: compute for the Harbor services, block storage for image layers and Helm charts, a PostgreSQL database (the bundled internal database moved to PostgreSQL 18 in v2.15.2), and a Valkey cache that replaced Redis in the same release. Storage and egress grow with image count, tag retention and the number of clusters pulling, so ask your platform team to size them against your real pull volume before comparing totals.

Harbor also adds recurring engineering work that a hosted registry absorbs. Vulnerability scanning depends on Trivy, which Harbor bundles at install time through the --with-trivy option, so someone must keep the scanner database and the Harbor release current. Harbor v2.15.3 shipped security fixes together with two breaking changes, blocking webhooks to internal addresses by default and failing signing of unsigned images in projects that enforce content trust, so each upgrade needs a test window and a backup first, as the v2.15.2 release notes advise. Garbage collection, replication schedules, certificates and backups are also yours to run. Cost rises with the number of environments, HA requirements and the staff hours your team spends on upgrades, and falls when you standardize on one installer path and automate upgrades.

The one-time cost is setup: architecture, installation, SSO wiring to your OIDC or LDAP directory, replication and proxy cache configuration, CI and cluster repointing, and runbooks. Ask any implementation partner for a written scope listing these items, the environments covered and the acceptance tests, then ask what ongoing support and upgrade retainer would cost after go-live. Keep a paid Docker plan for a period only if specific developers still need hosted features during the cutover, and budget the overlap explicitly so it does not become a permanent second bill.

Where Harbor does not replace Docker Hub one for one

Harbor covers private OCI storage, replication and proxy caching well, but several Docker Hub capabilities work differently or live outside Harbor entirely. The cards below cover the gaps a buyer should verify with Docker and in their own environment before committing to a cutover.

Docker Scout versus Trivy

Harbor's built-in vulnerability analysis uses the open-source Trivy scanner, which must be enabled at install time with the --with-trivy option or connected as an external instance. Docker Scout is a Docker-hosted service with its own analysis, policies and dashboards, so findings, severity mapping and policy outputs will not match one for one. Confirm which Scout features your security team uses, such as policy evaluation and base image recommendations, and test whether Trivy results meet the same gating rules in your pipeline.

Docker's hosted community and official catalog

Docker Hub hosts public community images and the Docker Official Images catalog, which many teams pull without thinking about provenance. A self-hosted Harbor registry does not inherit that catalog. Proxy cache projects can keep upstream images reachable, but you own the decisions about which upstream images are trusted, how often they refresh and who approves a new base image. Ask Docker which official and verified publisher content your build and deploy paths depend on.

Availability design you now own

Docker Hub runs as a managed service, so a registry outage is Docker's incident to resolve. Harbor's high availability depends on your design, including shared PostgreSQL, Redis or its successor cache, shared storage and redundant components. The Harbor high availability Helm guide describes one path, but you must size, test and monitor it yourself. Confirm your recovery objectives for image pulls, pushes and replication with the teams that depend on them.

Plan-gated features your team relies on

Some Docker Hub features, including SSO, team and organization controls, and advanced security capabilities, depend on the subscription tier you hold. Harbor's identity options, LDAP, AD and OIDC, cover many access needs but are configured by your team. Make an inventory of every Docker Hub feature used by developers and CI, then confirm with Docker which tier provides it and whether Harbor, your identity provider or another tool replaces it.

Pull limits and CI behavior

Harbor has no per-pull quota of its own, but its proxy cache checks cached images with HEAD requests that do not trigger the Docker Hub rate limiter. Pipelines that pull directly from Docker Hub, or that pull images not yet cached, still count against Docker's limits. Audit your CI jobs and cluster nodes to find direct Docker Hub pulls, then confirm how Docker counts pulls for your account type.

Keep Docker Hub, run Harbor, or both

Many teams do not have to choose one registry. A common pattern keeps a paid Docker plan for public image pulls and runs a self-hosted Harbor registry for private repositories, regulated images and internal Helm charts. The other common pattern uses Harbor as a proxy cache in front of Docker Hub, so cluster and CI pulls of public images go through your own registry while Docker Hub stays the upstream source. Which path fits depends on where your images come from and who is allowed to see them, not on a general preference for open source.

Keeping Docker Hub makes sense when public base images are the bulk of your pulls, your build fleet already stays within the account-based allowances, and your private repositories are small enough that a per-seat plan costs less than the engineering time to operate Harbor. It also makes sense when a team relies on Docker Scout or other Docker-hosted features that you have not yet confirmed Harbor replaces. Check the current Docker plan terms directly with Docker, including which features are gated to Team and Business, and compare them with your own pull volume measured over several weeks, as the Docker Hub pull usage and limits documentation describes the counting rules.

Running Harbor makes more sense when private application images, proprietary base images or regulated workloads must stay inside your own network or cloud account, when you need the audit logs, role-based access and LDAP or OIDC sign-on that you control, or when air-gapped clusters need an internal source. A hybrid is often the most practical: keep the paid plan for public pulls if needed, and point clusters at a Harbor proxy cache project so that repeated pulls of public images are served locally. Confirm with your security team which images may be cached, how long cached copies are retained (the default proxy cache retention is 7 days according to Harbor's documentation), and who runs the upgrades and backups for the Harbor instance.

How DeployOpen helps you evaluate and move to Harbor

DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, backs up, documents and supports self-hosted open-source platforms inside your own infrastructure. For Docker Hub vs Harbor, we start from your actual pull patterns, identity setup and scanning requirements, then deliver a Harbor registry that runs in your cloud account, data center or air-gapped network.

How we scope

  • We inventory which images, tags and Helm charts your CI and clusters pull from Docker Hub today
  • We document identity requirements, including whether you need LDAP, AD or OIDC single sign-on in Harbor
  • The written scope lists deployment target, replication and proxy cache design, scanning choices and handover documents

How we build

  • We install and configure Harbor in your environment, including PostgreSQL, Valkey and storage sizing decisions
  • We set up replication rules and proxy cache projects, then test pulls against rate limits and upstream outages
  • We enable Trivy scanning, test projects with access control and audit logs, and run OCI conformance checks on the result

How we hand over

  • We deliver runbooks for upgrades, including the backup steps and reindexing guidance in Harbor release notes
  • We document garbage collection, retention, backup and restore procedures so your team can run the registry
  • We walk your platform and security engineers through the configuration, then transfer ownership in writing

How we support

  • Fixed-scope engagements are agreed in writing before work starts, and pricing follows from that written scope
  • Ongoing support, upgrades and continuous security testing are available as retainers
  • We can plan Harbor patch releases, such as breaking-change reviews for webhooks and content trust, as part of a retainer

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.