환경 : Ubuntu 22.04
Docker image 저장을 위해 사설 레지스트리를 구축, 방법을 까먹지 않기 위해서 정리
#apt 패키지 업데이트
sudo apt-get update
#docker 설치
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
#docker-compose 설치
sudo apt install -y docker-compose
#설치 확인
docker-compose --version
1. Harbor 설치를 위한 사양
하드웨어

소프트웨어

2. Harbor 다운로드
Harbor releases page 👈여기서 릴리즈 버전을 확인 할 수 있다.
#설치 파일 다운로드
wget https://github.com/goharbor/harbor/releases/download/v2.10.2/harbor-offline-installer-v2.10.2.tgz
#다운로드 파일 압축 해제
tar xzvf harbor-offline-installer-v2.10.2.tg
3. HTTPS 구성을 위한 SSL 인증서 생성하기(Harbor 설치 서버)
1) 인증 기관의 인증서 생성
# 인증서 디렉토리 생성
mkdir ~/cert
cd ~/cert
#CA 인증서 개인 키를 생성
openssl genrsa -out ca.key 4096
#CA 인증서를 생성(개인 키에서 공개 키를 추출)
#CN=에 harbor를 설치할 서버의 FQDN/IP주소 입력
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Seoul/L=Seoul/O=example/OU=Personal/CN=10.3.20.30" \
-key ca.key \
-out ca.crt
생성되어야 하는 파일 👉 ca.key 와 ca.crt
2) 서버 인증서 생성
#1. 서버의 개인 키 생성
#{yourdomain.com}에 실제 사용하는 도메인이름 넣기
openssl genrsa -out {yourdomain.com}.key 4096
#2.인증서 서명 요청(공개 키 생성)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=10.3.20.30" \
-key 10.3.20.30.key \
-out 10.3.20.30.csr
#3.x509 v3 확장 파일을 생성
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP:10.3.20.30
EOF
#4. v3.ext파일로 Harbor 호스트에 대한 인증서를 생성
# yourdomain.comCSR 및 CRT 파일 이름의 를 Harbor 호스트 이름으로 바꿔줌
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in 10.3.20.30.csr \
-out 10.3.20.30.crt
(참고) 확장 파일 생성할 때 아래와 같이 설정하는 경우도 있다.
[alt_names]
DNS.1=10.3.20.30
DNS.2=yourdomain.com
DNS.3=yourdomain
EOF
생성되어야 하는 파일 👉 10.3.20.30.crt / 10.3.20.30.key
4. Harbor 및 Docker에 인증서 제공
#1. 서버 인증서와 키를 Harbor 호스트의 인증서 폴더에 복사
sudo mkdir -p /data/cert
cp 10.3.20.30.crt /data/cert/
cp 10.3.20.30.key /data/cert/
#2. Docker에서 사용할 수 있도록 cert 파일로 변환 yourdomain.com.crt > yourdomain.com.cert
# Docker 데몬은 .crt파일을 CA 인증서로 해석하고 .cert파일을 클라이언트 인증서로 해석
openssl x509 -inform PEM -in 10.3.20.30.crt -out 10.3.20.30.cert
#3. 서버 인증서, 키 및 CA 파일을 Harbor 호스트의 Docker 인증서 폴더에 복사
cp yourdomain.com.cert /etc/docker/certs.d/10.3.20.30/
cp yourdomain.com.key /etc/docker/certs.d/10.3.20.30/
cp ca.crt /etc/docker/certs.d/10.3.20.30/
#4. Docker 엔진을 다시 시작
systemctl restart docker
5. Harbor yaml 파일 셋팅 및 설치
1.에서harbor-offline-installer~ 을 압축해제 하면 harbor 파일이 보인다.
cd ~/harbor
#yaml 파일 복사
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
# 아래내용 변경
# hostname은 IP 혹은 도메인 네임으로
hostname: 10.3.20.30
certificate: /etc/docker/certs.d/10.3.20.30/10.3.20.30.cert
private_key: /etc/docker/certs.d/10.3.20.30/10.3.20.30.key
# 준비
./prepare
# 설치
./install.sh --with-clair --with-chartmuseum
위 과정이 다 되었을 경우 ip를 입력하면 아래처럼 웹 페이지로 진입한다.
초기설정 id : admin / password : Harbor12345

이미지를 푸쉬 하는 방법
