本文安裝環境是
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