本文安裝環境是
Dcoker version
Client: Docker Engine - Community Version: 19.03.6 API version: 1.40 Go version: go1.12.16 Git commit: 369ce74a3c Built: Thu Feb 13 01:29:29 2020 OS/Arch: linux/amd64 Experimental: false
Docker-compose version
docker-compose version 1.25.4, build 8d51620a docker-py version: 4.1.0 CPython version: 3.7.5 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
Harbor version:harbor-offline-installer-v1.10.1.tgz
1、Harbor 基礎知識
Harbor 是一個CNCF基金會托管的開源的可信的雲原生docker registry項目,可以用於存儲、簽名、掃描鏡像內容,Harbor 通過添加一些常用的功能如安全性、身份權限管理等來擴展 docker registry 項目,此外還支持在 registry 之間復制鏡像,還提供更加高級的安全功能,如用戶管理、訪問控制和活動審計等,在新版本中還添加了Helm倉庫托管的支持.
2、安裝 Harbor 條件說明

3、Harbor 安裝
3.1 下載 Harbor 文件包
(由於文件比較大,建議下載好傳遞到服務器解壓即可),下載鏈接點擊后面的文字即可. Harbor 下載鏈接
3.2 上傳到服務器
1)、執行 rz 命令,然后彈出窗口可以直接選擇.(如果沒有rz 命令 yum install -y lrzsz 即可)
2)、scp 上傳
[root@k8s-master01] # scp harbor-offline-installer-v1.10.1.tgz root@192.168.56.2:/root/software/harbor
3)、解壓
tar -zxvf harbor-offline-installer-v1.10.1.tgz

4)、修改配置文件 harbor.yml

5)、由於配置了 https,所以需要生成密鑰證書相關的信息
1、創建認證的證書 1.1 創建一個私鑰,創建成功后本目錄下會有一個 ca.key 的文件 [root@k8s-master01 keys2]# openssl genrsa -out ca.key 4096 Generating RSA private key, 4096 bit long modulus ....................................................................................................................................................................................................................................................................++ ................................++ e is 65537 (0x10001) 1.2 創建證書; 創建成功后目錄下會有 ca.crt 文件 調整-subj選項中的值以標識您的組織。如果使用FQDN連接端口主機,則必須將其指定為公共名稱(CN)屬性。 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com" \ -key ca.key \ -out ca.crt [root@k8s-master01 keys2]# openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com" \ -key ca.key \ -out ca.crt 2、創建服務端的證書 2.1[root@k8s-master01 keys2]# openssl genrsa -out mydocker.harbor.com.key 4096 Generating RSA private key, 4096 bit long modulus ................................................................................................................................................................................................++ ............................................++ e is 65537 (0x10001) 2.2 證書 調整-subj選項中的值以標識您的組織。如果使用FQDN連接端口主機,則必須將其指定為公共名稱(CN)屬性,並在密鑰和CSR文件名中使用。 [root@k8s-master01 keys2]# openssl req -sha512 -new \ -subj "/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com" \ -key mydocker.harbor.com.key \ -out mydocker.harbor.com.csr 2.3 生成一個x509 v3擴展文件。 無論您是使用FQDN還是IP地址來連接到您的Harbor主機,您都必須創建這個文件,以便為您的Harbor主機生成一個符合Subject Alternative Name (SAN)和x509 v3擴展要求的證書。替換DNS項以反映您的域。 [root@k8s-master01 keys2]# vim v3.ext authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=mydocker.harbor.com DNS.2=mydocker.harbor.com DNS.3=mydocker.harbor.com 2.4 使用v3。為您的Harbor主機生成證書的ext文件。 [root@k8s-master01 keys2]# openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in mydocker.harbor.com.csr \ -out mydocker.harbor.com.crt Signature ok subject=/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com Getting CA Private Key 3、然后把這些證書提供給 docker 和 harbor 3.1 /apps/registrs/cert 的目錄就是 harbor.yaml 里配置的 https 下的目錄,保持一致即可,沒有目錄就先創建一下 cp mydocker.harbor.com.crt /apps/registrs/cert/ cp mydocker.harbor.com.key /apps/registrs/cert/ 3.2 生成 .cert 文件以供 docker 使用 [root@k8s-master01 keys2]# openssl x509 -inform PEM -in mydocker.harbor.com.crt -out mydocker.harbor.com.cert 3.3 將服務器證書、密鑰和CA文件 copy 到 Harbor 主機上的Docker證書文件夾中 ##如果沒有這個目錄就創建一下先 mkdir -p /etc/docker/certs.d/ cp mydocker.harbor.com.cert /etc/docker/certs.d/ymydocker.harbor.com/ cp mydocker.harbor.com.key /etc/docker/certs.d/mydocker.harbor.com/ cp ca.crt /etc/docker/certs.d/mydocker.harbor.com/ 如果是有多個節點的話,記得把這這幾項也 copy 到節點的主機上 3.4 重啟 docker [root@k8s-master01 keys2]#systemctl restart docker
6)、安裝
./install.sh
安裝過程中會一步一步的執行,如果有配置文件問題,或者硬件什么的不滿足,就會直接報錯,根據錯誤提示信息解決即可.
我在安裝的過程中遇到過的問題
1)、yaml 格式有問題, 他會提示那一行有問題,打開 yaml 文件尋找特定的行即可.(我當時提示的是中文的冒號":",然后換成英文的冒號即可":")
2)、虛擬機選擇磁盤空間的時候,選擇的小,導致提示空間不足,然后刪除一些東西才可以了.
4、Harbor 測試
4.1 docker 登錄
[root@k8s-master01 harbor]# docker login https://mydocker.harbor.com/
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
如果沒有問題,就會提示如上的信息
然后可以測試一下 push 到倉庫.
這個 demo 是我自己寫的一個 springboot 的例子
首先構建 docker 鏡像,然后打 tag,再推送到這里來的.執行步驟如下:
Dockerfile
Dockerfile
From java:8 MAINTAINER bamboo ADD demo-0.0.1-SNAPSHOT.jar /demo-0.0.1-SNAPSHOT.jar EXPOSE 80 ENTRYPOINT ["java", "-jar", "/demo-0.0.1-SNAPSHOT.jar"]
構建鏡像
[root@k8s-master01 sbd]# docker build -f Dockfile -t demo:1.1 .
然后打 tag
[root@k8s-master01 sbd]# docker tag demo:1.1 mydocker.harbor.com/library/demo:1.1
查看構建、打 tag 的鏡像
[root@k8s-master01 sbd]# docker images |grep demo
[root@k8s-master01 sbd]# docker images |grep demo
demo 1.1 888f1547a370 22 hours ago 661MB
mydocker.harbor.com/library/demo 1.1 888f1547a370 22 hours ago 661MB
推送到倉庫
[root@k8s-master01 sbd]# docker push mydocker.harbor.com/library/demo:1.1
4.2 瀏覽器登錄
安裝成功后,打開瀏覽器 https://mydocker.harbor.com,輸入admin/Harbor12345 登錄就會看到如下的內容

其實盡量是按照官網的來搞,會比較清楚一點,這就需要鍛煉一下自己的英文了.官網的詳細步驟參考如下鏈接:
https://github.com/goharbor/harbor/tree/master/docs/1.10
