컨테이너 이미지와 레지스트리의 이해

컨테이너 이미지와 레지스트리의 이해

1️⃣ + 컨테이너 이미지란 무엇인가?

컨테이너 이미지는 실행 가능한 소프트웨어를 패키징한 파일입니다.
OS, 애플리케이션, 의존성 등이 포함되어 있으며, “어디서나 동일하게 실행"될 수 있게 해줍니다.

1. 도커 이미지 구조

┌────────────┐
│  Container │
├────────────┤
│   Image    │ ← 애플리케이션 + 런타임 + 의존성 + 설정 파일 등
├────────────┤
│   Layers   │ ← 여러 레이어로 구성됨
└────────────┘

2. 예시

# Nginx 이미지를 받아 실행하는 예시
docker pull nginx:latest
docker run -d -p 80:80 nginx

3. 이미지와 컨테이너의 차이

항목 이미지 (Image) 컨테이너 (Container)
정적
실행 여부
상태 저장 ✅ (볼륨 필요 시)

2️⃣ + Docker Hub, Private Registry 비교

컨테이너 이미지를 저장하고 배포하기 위한 공간이 바로 레지스트리입니다.

1. Docker Hub

  • Public 기반
  • 익숙하고 간단한 사용
  • 자동 빌드 및 GitHub 연동 가능
  • 단점: 보안/속도/사설 요구에는 한계

2. Private Registry

  • 사내망 혹은 클라우드에 자체 운영
  • 접근 제어, 보안 강화
  • 저장소 크기와 수명 관리 가능
  • 대표적인 예시: Harbor

3. 비교 표

항목 Docker Hub Private Registry (Harbor 등)
접근 제어 기본 제공 (제한적) 세분화된 RBAC 제공
속도/전송 글로벌 CDN 로컬 또는 전용망 가능
보안 감사 유료 Clair 취약점 스캐너 통합 가능
저장소 제어 제한적 정교한 정책 및 수명 관리 가능

3️⃣ + 왜 Harbor인가? (Harbor의 등장 배경과 필요성)

Harbor는 CNCF(Cloud Native Computing Foundation)에서 관리하는 오픈소스 컨테이너 이미지 레지스트리입니다.

1. 기존 Private Registry의 한계

  • 보안 기능 부족
  • 이미지 스캔 불가
  • 접근 제어가 미흡
  • 감사 로그 기능 없음

2. Harbor의 필요성

  • 엔터프라이즈 환경에서 다음을 만족해야 함:
    • 보안
    • 감사
    • 멀티테넌시
    • LDAP 연동
    • 이미지 검증 및 스캔

3. Harbor 주요 특징

기능 설명
Role-Based Access Control (RBAC) 프로젝트 기반 권한 관리
LDAP/AD 연동 조직과 통합 인증 가능
취약점 스캔 Clair 또는 Trivy 연동
Content Signing Notary로 이미지 서명
이미지 복제 멀티 리전 동기화 가능
Helm Chart 저장소 Helm Chart도 저장 가능

4. Harbor 아키텍처 다이어그램

┌─────────────┐      ┌──────────────┐
│   Client    │◄────►│   Reverse    │
│  (Docker)   │      │   Proxy      │
└─────────────┘      └─────┬────────┘
           ┌────────────┬──┴────────────┬──────────────┐
           │   Core     │  Registry     │   Chart Repo │
           │   Service  │  (Distribution)│              │
           └────────────┴───────────────┴──────────────┘
               ▲                ▲                 ▲
               │                │                 │
         ┌─────┴─────┐    ┌─────┴──────┐     ┌────┴───────┐
         │  DB       │    │  Job      │     │ Scanner    │
         │  (PgSQL)  │    │  Service  │     │ (Clair)    │
         └───────────┘    └───────────┘     └────────────┘

4️⃣ + OCI (Open Container Initiative) 개념

OCI는 컨테이너 생태계의 표준화를 위한 오픈 이니셔티브입니다.
Docker에서 분리되어 모든 컨테이너 도구가 동일한 규격을 따르도록 설계됨.

1. OCI가 만든 표준

  • Image Format: 컨테이너 이미지 구조
  • Runtime Spec: 실행 환경 규격 (예: runc)
  • Distribution Spec: 이미지 배포 및 레지스트리 통신 규격

2. Harbor와 OCI

Harbor는 OCI Distribution Spec을 준수합니다.
즉, Docker뿐만 아니라 Podman, CRI-O, containerd 등 다양한 컨테이너 엔진과도 호환됩니다.

3. OCI 기반 흐름

Build (Docker/Podman)
Push to OCI Registry (Harbor)
Store in OCI-compliant format
Pull from Harbor
Run using OCI runtime (runc/containerd)

RSS Feed
마지막 수정일자