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

以前寫過《搭建docker本地鏡像倉庫並提供權限校驗及UI界面》文章,而後有同仁評論道這樣作太複雜了,若是Harbor來搭建會更簡單同時功能也更強大。因而抽時間研究了基於Harbor構建本地鏡像倉庫,感受Harbor的確更簡單同時功能更強大,再此感謝各位同仁的建議。下面將基於Harbor構建本地鏡像倉庫的步驟分享出來,再次歡迎各位同仁點評。node

一、Harbor

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

  • 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官網內容。github

二、部署

部署Harbor前,首先得有docker環境、docker-compose的環境,若是你們沒有docker環境,能夠參考我以前的一篇文章《CentOS7離線部署docker》搭建環境,對於安裝docker-compose是很簡單,只以下操做:docker

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的最新版本,它提供兩種下載方式,一種是離線安裝包和在線安裝包,你們能夠根據本身的狀況下載,此處下載的是離線安裝包curl

(2)、下載後,將該文件解壓到/opt/harbor目錄下,固然你們也能夠根據本身的使用狀況放到相應的目錄便可測試

(3)、此處要開啓https訪問,因此得生成證書(注意:若是不以https訪問,這一個步驟就是不須要的),操做以下:ui

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地址url

(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

結果爲:

(7)、訪問https://192.168.208.147,若是以下:

三、測試

部署完成以後,測試一下鏡像的pull和push功能,首先將admin帳號登陸,並建立jgyw項目,即:

(1)、點擊「新建項目」

(2)、填寫項目信息,名稱爲jgyw,訪問級別爲公開,即全部人均可以pull鏡像下來,即:

(3)、建立用戶

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

(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項目中就有了該鏡像,即:

(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

鏡像就拉取下來了。

關注我

以你最方便的方式關注我:
微信公衆號:

相關文章
相關標籤/搜索