以前寫過《搭建docker本地鏡像倉庫並提供權限校驗及UI界面》文章,而後有同仁評論道這樣作太複雜了,若是Harbor來搭建會更簡單同時功能也更強大。因而抽時間研究了基於Harbor構建本地鏡像倉庫,感受Harbor的確更簡單同時功能更強大,再此感謝各位同仁的建議。下面將基於Harbor構建本地鏡像倉庫的步驟分享出來,再次歡迎各位同仁點評。node
Harbor是VMware公司開源了企業級Registry項目, 其的目標是幫助用戶迅速搭建一個企業級的Docker registry服務。它以Docker公司開源的registry爲基礎,額外提供了以下功能:git
以上功能是將官網的內容作了簡單翻譯,若是你們想深層次瞭解一下,能夠查看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
鏡像就拉取下來了。
以你最方便的方式關注我:
微信公衆號: