Harbor Registry 서비스를 Docker Compose 환경으로 구성
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 사용 방법
- 파일 생성: 위의 내용을
docker-compose.yml
파일에 저장합니다. - 서비스 시작: 터미널에서 다음 명령을 실행하여 Harbor Registry를 시작합니다.이 명령은 Harbor Registry를 백그라운드에서 실행합니다.
docker-compose up -d
- 로그 확인: 서비스 로그를 확인하려면 다음 명령을 사용합니다.
docker-compose logs -f
- 서비스 중지: 서비스를 중지하고 모든 컨테이너를 제거하려면 다음 명령을 사용합니다.
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
세부 설정
- Harbor UI: Harbor 웹 UI 컴포넌트입니다. 일반적으로 웹 서버가 포함된 컨테이너로, 사용자가 브라우저를 통해 Harbor를 관리할 수 있게 해줍니다.
- Harbor Registry: 이미지를 저장하는 레지스트리 서비스입니다. 설정 파일을 마운트해야 하며, 필요에 따라 보안 및 저장 옵션을 구성할 수 있습니다.
- Redis: 세션 관리 및 캐싱을 위해 사용됩니다. Harbor의 성능을 향상시키는 중요한 요소입니다.
- PostgreSQL: 데이터베이스 서비스입니다. 사용자 정보, 프로젝트, 이미지, 태그 등 Harbor에서 필요한 모든 데이터를 저장합니다.
실행과 관리
- 서비스 시작:
docker-compose up -d
명령을 통해 모든 서비스를 백그라운드에서 시작할 수 있습니다. - 로그 확인:
docker-compose logs -f
명령을 사용하여 특정 서비스의 로그를 실시간으로 확인할 수 있습니다. - 서비스 중지:
docker-compose down
명령을 사용하여 모든 서비스를 중지하고 컨테이너를 제거할 수 있습니다.
위 구성은 Harbor의 기본적인 웹 UI와 필수 서비스를 포함하고 있으며, 실제 사용 환경에 맞게 세부 설정을 조정해야 할 수도 있습니다. 보안 설정과 네트워크 구성도 중요하므로, 배포 전에 이를 검토하고 적절히 설정하세요.