Harbor
A CNCF-graduated, self-hosted registry for container images and other OCI artifacts that adds projects, access control, vulnerability scanning, signing, replication, proxy caching and tag retention on top of the standard registry.
CNCF · Graduated- What it is
- Artifact registries
- Type
- Open source
- Foundation
- Cloud Native Computing Foundation, graduated, joined July 2018. Part of the Linux Foundation
- License
- Apache 2.0
- Facts checked
- 24 October 2026
What it is
Harbor wraps the open-source Distribution registry, which stores images and handles docker push and docker pull, with the services a team needs around it. An Nginx proxy routes requests to the web portal, the registry or Harbor Core, which provides the API, authentication, projects, quotas, replication and scanning. When a Docker client logs in or pushes, the registry sends it to Core’s token service, which checks the user against PostgreSQL or LDAP/AD and issues a signed token. A Job Service runs background work such as scans and replication, with Redis for caching and job metadata. Since Harbor 2.0 it stores OCI artifacts such as Helm charts as well as images.
Images live in projects, each with its own members, roles and policies. A proxy cache project stands in front of Docker Hub, another Harbor, ECR, ACR, Google’s registry, Quay, GitHub Container Registry or Artifactory: clients pull <harbor>/<project>/<image>, Harbor fetches and stores the image on a miss, and on later pulls checks the upstream manifest and serves the cached copy if nothing changed or if upstream is unreachable. You can’t push to a proxy cache project, and it gets a 7-day tag retention policy by default.
Tag retention rules are retain rules: you say which artifacts to keep, such as the 10 most recently pushed or those pulled in the last 30 days, filtered by repository and tag patterns, and everything else is discarded. Scanning goes through pluggable adapters such as Trivy, and a project can require that every artifact is signed with Cosign or Notation before it can be pulled. Replication copies images to and from other Harbor instances and registries such as Docker Hub, ECR, ACR, Artifactory, Quay and GitLab.
Why teams pick it
- Free and open source with no paid edition, under neutral CNCF governance
- Covers the whole container supply chain in one install: RBAC, scanning, signing policy, replication, proxy cache and retention
- Proxy cache projects cut Docker Hub pulls, keep serving when upstream is down, and check for updates with HEAD requests that don’t count against Docker Hub’s rate limit
- Multi-tenant projects with OIDC or LDAP login suit platform teams serving many groups
Watch out for
- Only for OCI artifacts: no Maven, npm or PyPI repositories, so language packages need another registry
- Several services to run and upgrade (Core, Job Service, registry, portal, PostgreSQL, Redis, scanner)
- No virtual repository: each proxy cache is its own project path, so image names change from
nginxtoharbor.example.com/dockerhub/library/nginx - A proxy cache is not an archive: if an image is deleted upstream, Harbor stops serving its cached copy
Alternatives
What all artifact registries have in common →Compare side by side →How it fits with other technologies
What Harbor uses
Pull Docker Hub images through a proxy cache project named dockerhub · bash
# Instead of: docker pull nginx:1.27
docker pull harbor.example.com/dockerhub/library/nginx:1.27
# The first pull fetches from Docker Hub and caches the image;
# later pulls are served by Harbor after a manifest checkSee it in a real stack
No architecture uses Harbor yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2014–2026
Harbor started in 2014 as an internal project at VMware, which open-sourced it in 2016. It took the open-source Docker registry and added what enterprises asked for around it: users and projects, role-based access, replication between registries and, later, vulnerability scanning and image signing.
VMware donated Harbor to the Cloud Native Computing Foundation in the summer of 2018, and it was accepted as an incubating project that November. Harbor 2.0 made it a general OCI artifact registry, storing Helm charts and other artifacts next to images. On June 23, 2020 Harbor became the eleventh CNCF project to graduate; the announcement named adopters including China Mobile, JD.com, Samsung SDS, Trend Micro and VMware.
Later releases followed the industry: Clair stopped being the default scanner in v2.2, proxy cache projects learned to check Docker Hub with HEAD requests that don’t count against its pull limit (v2.1.1), and signing moved to Cosign (from v2.5) and Notation. Patch releases for both the 2.15 and 2.14 lines came out in October 2026.
Why it’s built this way
- Build on the standard registry instead of replacing it
- The Distribution registry already implemented push and pull. Harbor put a proxy and token service in front of it and kept its own logic for users, policies and jobs, so the storage path stayed compatible with every Docker client.
- Pluggable scanners
- Different organizations trust different scanners. An adapter interface lets Harbor run Trivy, Anchore, Sysdig and others, and let it drop Clair as the default without breaking users.
- Retention rules that say what to keep
- Listing what to keep (recent pushes, recent pulls, matching tags) is safer than listing what to delete: anything a team cares about can be named, and the rest is cleaned up.
Timeline
- 2014
Harbor starts as an internal VMware project
- 2016
Harbor is open-sourced
- 2018
Donated to the CNCF; accepted as incubating (November)
- 2020
Harbor 2.0 adds OCI artifacts; CNCF graduation (June 23)
- 2026
2.15.4 (October 9) and 2.14.6 (October 23)
Sources7 · facts checked 24 October 2026
- Harbor website
- Harbor wiki: Architecture overview of Harbor (v2.0 components)
- Harbor docs: Configure proxy cache
- Harbor docs: Create tag retention rules
- Harbor docs: Sign artifacts (Cosign, Notation, content trust)
- Harbor docs: Compatibility list (scanners, replication, OIDC providers)
- goharbor/harbor on GitHub (Apache 2.0)