一、環(huán)境準(zhǔn)備
CentOS 7.6 Minimal 192.168.73.135
Docker 20.10.12
Docker Compose v2.2.2
Openssl (CentOS系統(tǒng)自帶)
二、下載
下載地址
https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
解壓
# 解壓
tar -xvf harbor-offline-installer-v2.4.1.tgz
# 移動(dòng)到安裝目錄
mv harbor /usr/local/harbor
三、HTTPS證書
在CentOS服務(wù)器進(jìn)行如下操作,我這里使用域名harbor.rkyao.com訪問,生成證書命令里的域名替換成這個(gè)
1、生成證書頒發(fā)機(jī)構(gòu)證書
在生產(chǎn)環(huán)境中,您應(yīng)該從 CA 獲得證書。在測試或開發(fā)環(huán)境中,您可以生成自己的 CA。要生成 CA 證書,請運(yùn)行以下命令。
- 生成 CA 證書私鑰
openssl genrsa -out ca.key 4096
- 生成CA證書
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.rkyao.com" \
-key ca.key \
-out ca.crt
2、生成服務(wù)器證書
證書通常包含一個(gè).crt文件和一個(gè).key文件
- 生成私鑰
openssl genrsa -out harbor.rkyao.com.key 4096
- 生成證書簽名請求(CSR)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.rkyao.com" \
-key harbor.rkyao.com.key \
-out harbor.rkyao.com.csr
- 生成一個(gè)x509 v3擴(kuò)展文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.rkyao.com
DNS.2=harbor.rkyao.com
DNS.3=harbor.rkyao.com
EOF
- 使用該
v3.ext文件為您的Harbor主機(jī)生成證書
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.rkyao.com.csr \
-out harbor.rkyao.com.crt
3、提供證書給Harbor和Docker
生成后ca.crt、harbor.rkyao.com.crt和harbor.rkyao.com.key文件,必須將它們提供給Harbor和Docker,并重新配置Harbor以使用它們。
- 將服務(wù)器證書和密鑰復(fù)制到
Harbor主機(jī)上的/data/cert/文件夾中
mkdir -p /data/cert/
cp harbor.rkyao.com.crt /data/cert/
cp harbor.rkyao.com.key /data/cert/
- 轉(zhuǎn)換
harbor.rkyao.com.crt為harbor.rkyao.com.cert,供Docker使用,Docker守護(hù)進(jìn)程將.crt文件解釋為CA證書,將.cert文件解釋為客戶端證書。
openssl x509 -inform PEM -in harbor.rkyao.com.crt -out harbor.rkyao.com.cert
- 將服務(wù)器證書、密鑰和
CA文件復(fù)制到Harbor主機(jī)上的Docker證書文件夾中,您必須先創(chuàng)建適當(dāng)?shù)奈募A。
mkdir -p /etc/docker/certs.d/harbor.rkyao.com/
cp harbor.rkyao.com.cert /etc/docker/certs.d/harbor.rkyao.com/
cp harbor.rkyao.com.key /etc/docker/certs.d/harbor.rkyao.com/
cp ca.crt /etc/docker/certs.d/harbor.rkyao.com/
證書文件夾的目錄結(jié)構(gòu)
/etc/docker/certs.d/
└── harbor.rkyao.com
├── ca.crt
├── harbor.rkyao.com.cert
└── harbor.rkyao.com.key
- 重啟
Docker
systemctl restart docker
四、Harbor配置文件
# 切換到安裝目錄
cd /usr/local/harbor
# harbor.yml為配置文件,默認(rèn)不存在,需從harbor.yml.tmpl復(fù)制出一個(gè)出來
cp harbor.yml.tmpl harbor.yml
# 打開文件
vi harbor.yml
# 修改如下配置
hostname: harbor.rkyao.com
certificate: /data/cert/harbor.rkyao.com.crt
private_key: /data/cert/harbor.rkyao.com.key
external_url: https://harbor.rkyao.com
五、安裝
# 切換到安裝目錄
cd /usr/local/harbor
# 執(zhí)行安裝腳本
sh install.sh
六、Web頁面
本地win系統(tǒng)配置hosts
192.168.73.135 harbor.rkyao.com
瀏覽器訪問 https://harbor.rkyao.com 即可打開Web管理界面,用戶名密碼為 admin/Harbor12345
七、上傳及拉取鏡像
在另一臺Linux服務(wù)器上面進(jìn)行測試
1、配置
配置hosts
vi /etc/hosts
# 添加如下內(nèi)容
192.168.73.135 harbor.rkyao.com
在Docker的配置文件的目錄添加服務(wù)器證書
# 創(chuàng)建目錄
mkdir -p /etc/docker/certs.d/harbor.rkyao.com/
# 該目錄下添加三個(gè)證書文件ca.crt、harbor.rkyao.com.cert、harbor.rkyao.com.key,從安裝Harbor的機(jī)器上 /etc/docker/certs.d/harbor.rkyao.com 目錄下copy過來,參見上面 三、3、3)節(jié)
2、上傳鏡像
通過Web界面創(chuàng)建一個(gè)項(xiàng)目rkyao,先創(chuàng)建了才能上傳鏡像

上傳鏡像
# 登錄 用戶名密碼 admin/Harbor12345
docker login --username=admin harbor.rkyao.com
# 給本地鏡像打tag,命令格式如下
docker tag [ImageId] [harbor域名]/[項(xiàng)目名]/[REPOSITORY]:[TAG]
eg: docker tag 57c4d3c46810 harbor.rkyao.com/rkyao/eureka-server:1.0.0
# 上傳鏡像
docker push [harbor域名]/[項(xiàng)目名]/[REPOSITORY]:[TAG]
eg: docker push harbor.rkyao.com/rkyao/eureka-server:1.0.0
在Web頁面上查看,有剛才上傳的鏡像說明上傳成功

3、拉取鏡像
拉取命令格式如下
docker pull [harbor域名]/[項(xiàng)目名]/[REPOSITORY]:[TAG]
eg: docker pull harbor.rkyao.com/rkyao/eureka-server:1.0.0
查看本地鏡像,拉取成功
