2023-03-10
#26 [학습서] 컨테이너 레지스트리 구축 - Harbor
2023-03-10
Tasks

컨테이너 레지스트리 - Harbor#

  • 컨테이너 레지스트리란?

    • 컨테이너 이미지를 저장하고 엑세스하는 저장소입니다.
  • Harbor

    • CNCF에 등록된 컨테이너 레지스트리 오픈소스 프로젝트입니다.
    • Harbor를 통하여 개인 컨테이너 레지스트리를 구축 할 수 있습니다.
    • Web interface를 제공하므로 사용하기가 편리합니다.
    • 유저 인증으로 접근 권한을 줄 수 있는 보안 기능이 있습니다.

Harbor 구축#

  • 선행사항
      1. Docker 설치
      1. Docker-compose 설치

구축방법#

[harbor 다운로드 및 압축풀기]
wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-online-installer-v2.7.0.tgz
tar xvf harbor-online-installer-v2.7.0.tgz

[harbor 설정파일 수정]
cd harbor/
cp harbor.yml.tmpl harbor.yml
HOST_IP=`hostname -I | awk '{print $1}'`
sed  -i "s/reg.mydomain.com/${HOST_IP}/g" harbor.yml

vim harbor.yml
https 관련 부분들 주석처리

스크린샷, 2023-01-06 15-20-26.png

[prepare 파일 실행]
sed -i "s/goharbor/ghcr.io\/octohelm\/harbor/g" prepare
./prepare

[docker-compose 파일 수정 및 실행]
sed -i "s/goharbor/ghcr.io\/octohelm\/harbor/g" docker-compose.yml
sudo docker-compose up -d

[Harbor 확인]
sudo docker-compose ps -a

스크린샷, 2023-01-06 15-37-17.png

접속#

  • HOST_IP 변수에 저장된 IP로 접속합니다.
    • Default ID : admin
    • Default P/w : Harbor12345

스크린샷, 2023-01-06 16-16-40.png 스크린샷, 2023-01-06 16-17-07.png

사용방법#

Harbor 내에 프로젝트 추가#

    1. 프로젝트 추가
    • NEW PROJECT 선택 프로젝트 이름과 할당 디스크 용량 입력
      스크린샷, 2023-01-06 19-29-56.png
    1. 프로젝트 생성 확인
      스크린샷, 2023-01-06 19-30-07.png
      스크린샷, 2023-01-06 19-30-20.png

이미지 업로드#

  • Harbor 로그인
docker login 192.168.3.109

ID : admin
PW : Harbor12345
  • insecure 레지스트리 추가 (레지스트리가 http로 구축 되어있어 다음의 내용을 추가)
[/etc/docker/daemon.json 생성 후 다음 내용 추가]
sudo vim /etc/docker/daemon.json

{
    "insecure-registries": ["<Private 컨테이너 레지스트리 IP>:<Private 컨테이너 레지스트리 포트>"]
}

스크린샷, 2023-01-06 19-27-35.png

[도커 서비스 재시작]
systemctl restart docker


[Container image tag 변경]
docker tag [image] <Private 컨테이너 레지스트리 IP>:<Private 컨테이너 레지스트리 포트>/<프로젝트>/<이미지 이름>:<태그>

ex) docker tag ubuntu:20.04 192.168.3.109/xslab-test/ubuntu:20.04

[이미지 업로드]
docker push <Private 컨테이너 레지스트리 IP>:<Private 컨테이너 레지스트리 포트>/<프로젝트>/<이미지 이름>:<태그>

ec) docker push 192.168.3.109/xslab-test/ubuntu:20.04

스크린샷, 2023-01-06 19-35-32.png 스크린샷, 2023-01-06 19-35-39.png

이미지 다운로드#

[Harbor 로그인]
docker login <Private 컨테이너 레지스트리 IP>:<Private 컨테이너 레지스트리 포트>

ex) docker login 192.168.3.109

ID : admin
PW : Harbor12345

[/etc/docker/daemon.json 생성 후 다음 내용 추가]
sudo vim /etc/docker/daemon.json

{
    "insecure-registries": ["<Private 컨테이너 레지스트리 IP>:<Private 컨테이너 레지스트리 포트>"]
}

[도커 서비스 재시작]
systemctl restart docker

[이미지 다운로드]
docker pull <Private 컨테이너 레지스트리 IP>:<Private 컨테이너 레지스트리 포트>/<프로젝트>/<이미지 이름>:<태그>

ex) docker pull 192.168.3.109/xslab-test/ubuntu:20.04

[이미지 확인]
docker image list

---
REPOSITORY                        TAG       IMAGE ID       CREATED       SIZE
192.168.3.109/xslab-test/ubuntu   20.04     43ed104e759f   4 weeks ago   65.7MB
Comment 0

Add a comment