基於Harbor構建本地鏡像倉庫

之前寫過 文章,然後有同仁評論道這樣做太複雜了,如果Harbor來搭建會更簡單同時功能也更強大。於是抽時間研究了基於Harbor構建本地鏡像倉庫,感覺Harbor的確更簡單同時功能更強大,再此感謝各位同仁的建議。下面將基於Harbor構建本地鏡像倉庫的步驟分享出來,再次歡迎各位同仁點評。

1、Harbor

Harbor是VMware公司開源了企業級Registry項目, 其的目標是幫助用戶迅速搭建一個企業級的Docker registry服務。它以Docker公司開源的registry為基礎,額外提供瞭如下功能:

  • Cloud native registry:支持容器鏡像和Helm Charts,為雲原生環境提供服務
  • Role based access control:基於角色的訪問控制
  • Policy based image replication:基於策略的鏡像複製
  • Vulnerability Scanning:鏡像的漏洞掃描
  • LDAP/AD support:AD/LDAP集成
  • Image deletion & garbage collection:鏡像的刪除和空間清理
  • Notary:可以保證鏡像的真實性
  • Graphical user portal:友好的管理UI
  • Auditing:日誌審計
  • RESTful API:提供RESTfull接口易於與外部系統集成
  • Easy deployment:部署簡單

以上功能是將官網的內容做了簡單翻譯,如果大家想深層次瞭解一下,可以查看Harbor官網內容。

2、部署

部署Harbor前,首先得有docker環境、docker-compose的環境,如果大家沒有docker環境,可以參考我之前的一篇文章 搭建環境,對於安裝docker-compose是很簡單,只如下操作:

curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

注意:如果運行環境不能直接聯外網,則可以先下載二進制包,然後手動放置到相應目錄,並授權即可。

有了docker環境、docker-compose的環境後,可以開始部署Harbor了,步驟如下:

(1)、到Github上下載目前Harbor的最新版本,它提供兩種下載方式,一種是離線安裝包和在線安裝包,大家可以根據自己的情況下載,此處下載的是離線安裝包

微服務架構 - 基於Harbor構建本地鏡像倉庫

(2)、下載後,將該文件解壓到/opt/harbor目錄下,當然大家也可以根據自己的使用情況放到相應的目錄即可

(3)、此處要開啟https訪問,所以得生成證書(注意:如果不以https訪問,這一個步驟就是不需要的),操作如下:

mkdir /opt/harbor/certs
cd /opt/harbor/certs
openssl req \\
-new \\
-newkey rsa:4096 \\
-days 365 \\
-subj "/CN=192.168.208.147" \\
-nodes \\
-x509 \\
-keyout auth.key \\
-out auth.cert

注意:此處的ip地址192.168.208.147,是搭建Harbor服務所在的ip地址

(4)、修改harbor.cfg配置文件信息,分別修改以下配置信息:

# 主機名改成本服務器的ip
hostname = 192.168.208.147
# 訪問的協議https
ui_url_protocol = https
# 由於前一步我們自己生成了證書,所以該值改為off
customize_crt = off
# ssl證書的路徑
ssl_cert = /opt/harbor/certs/auth.cert
# ssl密鑰的路徑
ssl_cert_key = /opt/harbor/certs/auth.key

# 設置ui系統的admin賬號的密碼,默認為Harbor12345
harbor_admin_password = Adminjgyw

(5)、安裝,執行:

./install.sh

(6)、執行上面的安裝腳本,實質是執行docker compose來部署應用的,所以可以通過docker compose命令查看服務信息:

docker-compose ps

結果為:

微服務架構 - 基於Harbor構建本地鏡像倉庫

(7)、訪問https://192.168.208.147,如果如下:

微服務架構 - 基於Harbor構建本地鏡像倉庫

3、測試

部署完成之後,測試一下鏡像的pull和push功能,首先將admin賬號登錄,並創建jgyw項目,即:

(1)、點擊“新建項目”

微服務架構 - 基於Harbor構建本地鏡像倉庫

(2)、填寫項目信息,名稱為jgyw,訪問級別為公開,即所有人都可以pull鏡像下來,即:

微服務架構 - 基於Harbor構建本地鏡像倉庫

(3)、創建用戶

微服務架構 - 基於Harbor構建本地鏡像倉庫

(3)、為jgyw項目添加成員,同時角色為開發人員,這樣可以將鏡像push到該項目中,即:

微服務架構 - 基於Harbor構建本地鏡像倉庫

(4)、push鏡像

docker login 192.168.208.147
# 輸入上面新建的jgyw用戶名和密碼即可登錄

如果此處發生如下錯誤:

Error response from daemon: Get https://192.168.208.147/v1/users/: x509: cannot validate certificate for 192.168.208.147 because it doesn't contain any IP SANs 

則需要將/usr/lib/systemd/system/docker.service文件中ExecStart值修改為如下形式,即:

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.208.147

測試openzipkin/zipkin:2.12.1鏡像

將openzipkin/zipkin:2.12.1鏡像打上標籤,即:

docker tag openzipkin/zipkin:2.12.1 192.168.208.147/jgyw/zipkin:2.12.1

然後執行push命令:

docker push 192.168.208.147/jgyw/zipkin:2.12.1

執行完成後,可以查到jgyw項目中就有了該鏡像,即:

微服務架構 - 基於Harbor構建本地鏡像倉庫

(5)、pull鏡像

首先將本機的192.168.208.147/jgyw/zipkin:2.12.1鏡像刪除掉,即:

docker rmi 192.168.208.147/jgyw/zipkin:2.12.1

然後執行pull命令,即:

docker pull 192.168.208.147/jgyw/zipkin:2.12.1

鏡像就拉取下來了。


分享到:


相關文章: