컨테이너 환경에서 서비스를 운영하다 보면, 이미지를 관리하는 일이 점점 중요해진다
그래서 대게 처음에는 Docker Hub 같은 퍼블릭 레지스트리를 사용하다가,,, 보안, 비용, 정책 문제로 인해 프라이빗 레지스트리를 직접 운영해야 할 필요성을 느끼게 된다. 그렇기에 “Harbor”라는 오픈소스 프로젝트가 중요한 수단이 될 수 있다.
harbor를 사용하는 이유는 다음과 같다
Harbor는 특히 Kubernetes 기반 클러스터를 운영할 때,
내부용 이미지 저장소로 구축하면 안정성과 보안성이 크게 향상된다.
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)
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 영역을 제대로 이해하는 데에 아주 아주 아주 큰 큰 큰 도움이 되었다..! (:
'클라우드 > 도커' 카테고리의 다른 글
[도커] failed to register layer: max depth exceeded 에러 해결 방법(MacOS 기준) (0) | 2025.04.23 |
---|---|
[도커] 기본 명령어 모음 (0) | 2025.03.07 |
[도커] 도커(docker)란? (0) | 2024.06.25 |