본문 바로가기
클라우드/도커

[도커] harbor: 오픈소스 컨테이너 이미지 레지스트리(Docker Hub의 대안)

by 클레어몬트 2025. 4. 29.

컨테이너 환경에서 서비스를 운영하다 보면, 이미지를 관리하는 일이 점점 중요해진다

그래서 대게 처음에는 Docker Hub 같은 퍼블릭 레지스트리를 사용하다가,,, 보안, 비용, 정책 문제로 인해 프라이빗 레지스트리를 직접 운영해야 할 필요성을 느끼게 된다. 그렇기에 “Harbor”라는 오픈소스 프로젝트가 중요한 수단이 될 수 있다.

 

harbor를 사용하는 이유는 다음과 같다

 

Harbor는 특히 Kubernetes 기반 클러스터를 운영할 때,

내부용 이미지 저장소로 구축하면 안정성과 보안성이 크게 향상된다.

 

 

 

CNCF(Cloud Native Computing Foundation)에서 지원하는 오픈소스 컨테이너 이미지 레지스트리

 

harbor를 쉽게 표현하면, “내가 직접 관리하는 Docker 이미지 저장소” 이다

 

 

[Harbor가 제공하는 기능들]

  • 이미지 저장 및 관리 (Docker Registry 기능)
  • 사용자 인증과 권한 관리
  • 이미지 서명(Notary) 및 취약점 스캔(Trivy 통합) - 이미지 보안 강화 기능
  • Role-Based Access Control (RBAC) - 프로젝트별 권한 부여 가능
  • auditing(감사) 기능
  • Multi-tenancy(멀티테넌시) 지원
  • Replication(레지스트리 복제) 기능 - 글로벌 분산 가능
  • LDAP/SAML 인증 연동 - 기업 내부 인증 시스템과 연결 가능
  • Heml Chart 저장소 기능 - K8s 배포에 필요한 Helm Charts 저장 가능

한마디로, 단순한 Registry가 아니라 기업용, 대규모 운영을 고려한 “보안 + 관리 기능까지 갖춘” 레지스트리라고 볼 수 있다

 

 

 

[Harbor 기본 구조]

Harbor는 주로 Docker-compose, Helm chart, 또는 Harbor Installer로 설치하여 운영할 수 있다

 

 

 

Harbor 설치 간단 예시 (docker-compose)

Harbor는 GitHub에서 공식 설치 스크립트를 제공한다

# 1. Harbor Installer 다운로드
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz

# 2. 압축 해제
tar xvf harbor-online-installer-v2.10.0.tgz

# 3. 설정 파일 수정 (harbor.yml)
vim harbor/harbor.yml

# 4. 설치 스크립트 실행
cd harbor
sudo ./install.sh

 

설치 후,

https://<서버 IP 또는 도메인>

으로 접속하면 Harbor 웹 UI를 사용할 수 있다!

 

 

 


Harbor CLI 로그인 커맨드 예시

docker login amdp-registry.skala-ai.com

 

 

Harbor에 직접 이미지 푸시(push) 커맨드 예시

docker push amdp-registry.skala-ai.com/skala25a/sk029-stock-market:1.0.0

 

 

 

(참고) Harbor 사용 프로젝트

https://github.com/imclaremont/stock-market

 

GitHub - imclaremont/stock-market: SpringBoot + Docker + K8s + Jenkins

SpringBoot + Docker + K8s + Jenkins. Contribute to imclaremont/stock-market development by creating an account on GitHub.

github.com

 

 

 

 

 

사실.... 솔직히 말하면 처음에는 “이미지를 저장하는데 뭐 이렇게 복잡해?“ 라고 생각했다. 하지만 실제 운영 환경을 생각하면 보안, 관리, 복제, 인증 같은 기능이 필수라는 걸 알게 되었다. Harbor를 구축하고 관리하는 경험이 Kubernetes나 DevOps 영역을 제대로 이해하는 데에 아주 아주 아주 큰 큰 큰 도움이 되었다..! (: