본문 바로가기
서버구축 (WEB,DB)

Harbor Registry 서비스를 Docker Compose 환경으로 구성

by 날으는물고기 2024. 5. 31.

Harbor Registry 서비스를 Docker Compose 환경으로 구성

Setting up your own Container Registry with Harbor - Docker - KodeKloud - DevOps Learning Community

Harbor는 컨테이너 레지스트리로, 이미지를 저장하고 관리하는 데 사용됩니다. Harbor를 Docker Compose로 설정하는 간단한 예를 들어 설명하겠습니다.

1. 필요 조건

  • Docker와 Docker Compose가 설치되어 있어야 합니다.
  • Harbor의 설치 파일을 다운로드해야 합니다. 이는 GitHub 릴리스 페이지에서 진행할 수 있습니다.

2. 설치 파일 준비

Harbor 설치 파일을 다운로드한 후, 압축을 풀고 설치 디렉토리로 이동합니다.

wget https://github.com/goharbor/harbor/releases/download/v2.x.x/harbor-online-installer-v2.x.x.tgz
tar xvf harbor-online-installer-v2.x.x.tgz
cd harbor

3. harbor.yml 설정

설치 디렉토리 안에 harbor.yml 파일이 있습니다. 이 파일을 편집하여 Harbor 설정을 완료합니다. 예를 들어, 호스트 이름, HTTPS, 인증 및 데이터 저장 옵션 등을 설정할 수 있습니다.

hostname: your-domain.com
http:
  port: 80
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path
harbor_admin_password: Harbor12345
database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 100
data_volume: /data

4. Docker Compose 파일

docker-compose.yml 파일은 이미 Harbor 설치 패키지에 포함되어 있습니다. 따라서 별도로 작성할 필요가 없습니다. 설정을 완료한 후, Harbor를 시작하기 위해 다음 명령을 사용합니다.

5. Harbor 설치

Harbor를 설치하고 시작하기 위해 아래 명령을 실행합니다.

./install.sh

이 명령은 harbor.yml에 기반하여 Docker Compose 환경을 설정하고 필요한 컨테이너를 실행합니다.

6. 확인

설치가 완료되면 웹 브라우저를 통해 http://your-domain.com 또는 https://your-domain.com (HTTPS를 설정한 경우)으로 접속하여 Harbor의 UI를 확인할 수 있습니다.

 

Bitnami의 harbor-registry 이미지를 사용하여 Docker Compose 파일을 작성하려면 아래와 같이 할 수 있습니다. 이 예제는 Harbor Registry 서비스를 구동하는 기본적인 설정을 포함하며, 필요에 따라 추가적인 서비스나 설정을 구성할 수 있습니다.

Docker Compose 파일 예제 (docker-compose.yml)

version: '3.7'

services:
  harbor-registry:
    image: bitnami/harbor-registry:latest
    container_name: harbor-registry
    ports:
      - "5000:5000"
    environment:
      - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/bitnami/registry
      - REGISTRY_HTTP_ADDR=0.0.0.0:5000
      - REGISTRY_HTTP_SECRET=CHANGE_ME # 이 값을 고유한 비밀 값으로 변경해야 합니다.
    volumes:
      - registry_data:/bitnami/registry

volumes:
  registry_data:
    driver: local

Docker Compose 사용 방법

  1. 파일 생성: 위의 내용을 docker-compose.yml 파일에 저장합니다.
  2. 서비스 시작: 터미널에서 다음 명령을 실행하여 Harbor Registry를 시작합니다.이 명령은 Harbor Registry를 백그라운드에서 실행합니다.
    docker-compose up -d
  3. 로그 확인: 서비스 로그를 확인하려면 다음 명령을 사용합니다.
    docker-compose logs -f
  4. 서비스 중지: 서비스를 중지하고 모든 컨테이너를 제거하려면 다음 명령을 사용합니다.
    docker-compose down

이 Docker Compose 설정은 Harbor Registry의 기본 설정만을 포함하고 있으며, 실제 사용을 위해서는 보안 설정, 네트워크 설정, 볼륨 관리 등 추가적인 설정이 필요할 수 있습니다. 예를 들어, REGISTRY_HTTP_SECRET 환경 변수는 반드시 변경해야 하는 보안 관련 설정입니다.

 

Harbor Registry 서비스를 실행하기 위해 설정 파일이 필요하고, 이 파일을 /etc/registry/config.yml 위치에 마운트해야 합니다. 설정 파일은 Harbor Registry의 구동 방식을 정의하고 다양한 설정을 지정하는 데 사용됩니다.

설정 파일 예제 (config.yml)

Harbor Registry의 기본적인 설정 파일 예제는 다음과 같습니다.

version: 0.1
log:
  level: info
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    layerinfo: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

Docker Compose 파일 수정

이제 이 설정 파일을 사용하여 Docker Compose 파일을 수정해야 합니다. 먼저, config.yml 파일을 만들고, 이 파일을 Docker 컨테이너에 마운트하는 설정을 추가합니다.

version: '3.7'

services:
  harbor-registry:
    image: bitnami/harbor-registry:latest
    container_name: harbor-registry
    ports:
      - "5000:5000"
    environment:
      - REGISTRY_HTTP_SECRET=CHANGE_ME # 이 값을 고유한 비밀 값으로 변경해야 합니다.
    volumes:
      - registry_data:/bitnami/registry
      - ./config.yml:/etc/registry/config.yml # 설정 파일 마운트

volumes:
  registry_data:
    driver: local

설정 파일을 사용하는 이유

  • 보안: 기본 설정을 변경하여 보안을 강화할 수 있습니다.
  • 성능: 로깅, 캐싱, 스토리지 드라이버의 설정을 조정하여 성능을 최적화할 수 있습니다.
  • 커스터마이징: 다양한 환경에 맞게 Harbor Registry를 맞춤 설정할 수 있습니다.

 

위 예제와 Docker Compose 파일 수정을 통해 Harbor Registry를 적절히 구성하고 실행할 수 있습니다. 설정 파일을 컨테이너에 마운트하고, 필요에 따라 세부적인 설정을 조정하세요.

 

Harbor를 완벽하게 사용하기 위해 Harbor의 웹 UI와 필요한 서비스들을 함께 구성하려면 좀 더 많은 컴포넌트를 포함해야 합니다. Harbor의 웹 UI는 이미지를 관리하고 사용자 인터페이스를 통해 다양한 설정과 관리 작업을 수행할 수 있게 해줍니다.

Docker Compose 파일 예제

아래 예제는 Harbor의 주요 컴포넌트를 포함하는 기본적인 Docker Compose 파일입니다. 이 예제에는 웹 UI 서비스, 레지스트리, 데이터베이스(PostgreSQL), 그리고 Redis 캐시 서비스가 포함되어 있습니다.

version: '3.7'

services:
  harbor-ui:
    image: goharbor/harbor-portal:latest
    container_name: harbor-ui
    ports:
      - "80:8080"

  harbor-registry:
    image: goharbor/registry-photon:latest
    container_name: harbor-registry
    volumes:
      - registry_data:/storage
      - ./config/registry/:/etc/registry/
    environment:
      - GODEBUG=netdns=go
    depends_on:
      - redis

  redis:
    image: redis:5.0
    container_name: redis

  postgresql:
    image: postgres:9.6
    container_name: postgresql
    environment:
      - POSTGRES_DB=registry
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  registry_data:
    driver: local
  db_data:
    driver: local

세부 설정

  1. Harbor UI: Harbor 웹 UI 컴포넌트입니다. 일반적으로 웹 서버가 포함된 컨테이너로, 사용자가 브라우저를 통해 Harbor를 관리할 수 있게 해줍니다.
  2. Harbor Registry: 이미지를 저장하는 레지스트리 서비스입니다. 설정 파일을 마운트해야 하며, 필요에 따라 보안 및 저장 옵션을 구성할 수 있습니다.
  3. Redis: 세션 관리 및 캐싱을 위해 사용됩니다. Harbor의 성능을 향상시키는 중요한 요소입니다.
  4. PostgreSQL: 데이터베이스 서비스입니다. 사용자 정보, 프로젝트, 이미지, 태그 등 Harbor에서 필요한 모든 데이터를 저장합니다.

실행과 관리

  • 서비스 시작: docker-compose up -d 명령을 통해 모든 서비스를 백그라운드에서 시작할 수 있습니다.
  • 로그 확인: docker-compose logs -f 명령을 사용하여 특정 서비스의 로그를 실시간으로 확인할 수 있습니다.
  • 서비스 중지: docker-compose down 명령을 사용하여 모든 서비스를 중지하고 컨테이너를 제거할 수 있습니다.

 

위 구성은 Harbor의 기본적인 웹 UI와 필수 서비스를 포함하고 있으며, 실제 사용 환경에 맞게 세부 설정을 조정해야 할 수도 있습니다. 보안 설정과 네트워크 구성도 중요하므로, 배포 전에 이를 검토하고 적절히 설정하세요.

728x90

댓글