Harbor は CNCF(Cloud Native Computing Foundation)Graduated プロジェクトのオープンソース・コンテナレジストリ。Docker Distribution(OCI 準拠レジストリ)をベースに、セキュリティ・アクセス制御・イメージ管理の機能群を上乗せした「エンタープライズ対応のプライベートレジストリ」。
内部は Go + Angular 製のマイクロサービス構成で、Core API / Job Service / Registry Controller / Web Portal / PostgreSQL / Redis の 7 サービスが Docker Compose または Helm Chart でデプロイされる。現行バージョンは v2.16.0。
| 観点 | Docker Hub / GitHub Packages | 素の Docker Registry | Harbor |
|---|---|---|---|
| 脆弱性スキャン | 有料 or 制限付き | なし | Trivy 統合で全イメージ自動スキャン |
| RBAC / マルチテナント | 組織単位のみ | なし | プロジェクト単位のロール制御・クォータ管理 |
| イメージ署名 | 限定的 | なし | Cosign / Notation 署名をネイティブサポート |
| レプリケーション | なし | なし | 複数レジストリ間で Push/Pull 双方向同期 |
| 保持ポリシー | 手動削除 | 手動 | タグ・日時ベースの自動 Retention + GC |
| 認証統合 | 独自アカウント | Basic認証のみ | LDAP / OIDC / AD / ロボットアカウント |
| 監査ログ | なし | なし | 全操作の Audit Log + Webhook 通知 |
| 運用場所 | SaaS(外部) | オンプレ可 | オンプレ・クラウド問わず自前運用可能 |
一言で言えば: 「素の Docker Registry では足りないガバナンス・セキュリティ機能を全部入りにした、自前運用できるレジストリ」。Docker Hub に機密イメージを置けない企業や、マルチクラウド環境でイメージを同期したいチームに最適。
1. デプロイ
├─ シングルノード → オフラインインストーラ or Docker Compose
└─ Kubernetes → Helm Chart(harbor-helm)or Harbor Operator
2. 初期設定(Web UI: https://<harbor-host>)
├─ 管理者ログイン(デフォルト: admin / Harbor12345)
├─ 認証バックエンド設定(LDAP / OIDC など)
└─ プロジェクト作成 + メンバー招待 + ロール付与
3. イメージの Push / Pull(通常の docker コマンド)
$ docker login <harbor-host>
$ docker tag myapp:v1 <harbor-host>/myproject/myapp:v1
$ docker push <harbor-host>/myproject/myapp:v1
4. セキュリティ運用
├─ 脆弱性スキャン:Push 時自動 or 手動 or 定期スケジュール
├─ イメージ署名 :Cosign で署名 → Harbor が署名を検証・表示
└─ CVE 許可リスト:許容する CVE をプロジェクト単位で管理
5. ライフサイクル管理
├─ Retention ポリシー:「直近 N 個だけ保持」等のルールで自動削除
├─ Immutable タグ :本番タグの上書きを禁止
└─ GC(ガベージコレクション):未参照 Blob の定期クリーンアップ
6. マルチサイト運用(必要に応じて)
└─ レプリケーションポリシーで他 Harbor / Docker Hub / ECR / ACR 等と同期
[ユーザー / CI/CD] ──HTTPS──▶ [Nginx Proxy]
├──▶ Portal (Angular UI)
├──▶ Core API (Go / Beego)
│ ├── RBAC・認証・ポリシー管理
│ └── PostgreSQL / Redis
├──▶ Registry (OCI Distribution)
│ └── Registryctl
└──▶ Job Service (非同期タスク)
├── スキャン / レプリケーション
└── GC / Retention / Webhook