鏡像倉庫作為Docker技術的核心組件之一,其主要作用就是負責鏡像內容的存儲和分發。Docker鏡像倉庫從使用范圍來說分為“公有鏡像倉庫”和“私有鏡像倉庫”,公有鏡像倉庫是可以被任何人使用的,例如Docker公司維護的在線存儲庫Docker Hub以及部分云服務廠商(如阿里云)提供的在線Docker鏡像庫等,都屬于公有鏡像倉庫的范疇。
Docker鏡像倉庫概述
鏡像倉庫作為Docker技術的核心組件之一,其主要作用就是負責鏡像內容的存儲和分發。Docker鏡像倉庫從使用范圍來說分為“公有鏡像倉庫”和“私有鏡像倉庫”,公有鏡像倉庫是可以被任何人使用的,例如Docker公司維護的在線存儲庫Docker Hub以及部分云服務廠商(如阿里云)提供的在線Docker鏡像庫等,都屬于公有鏡像倉庫的范疇。
而私有鏡像倉庫則是指部署在公司或組織內部,用于自身應用Docker鏡像存儲、分發的鏡像倉庫。在構建公司內部使用的自動化發布系統的過程中,從安全的角度出發,應用的打包鏡像一般情況下只會被存儲在私有鏡像倉庫中,CI/CD流程的銜接點也是通過向私有鏡像倉庫上傳鏡像和拉取鏡像的操作來完成的。
在現階段主流的企業級私有鏡像倉庫構建方案中,比較流行的是:開源的企業級Docker鏡像倉庫——Harbor、以及商業鏡像倉庫——JFrog Artifactory。這兩種Docker鏡像倉庫各自都有一定的市場,就作者所工作過的公司來說使用Harbor和JFrog Artifactory作為私有鏡像倉庫的都有,但就成熟度和功能性完整性來說JFrog Artifactory作為商業級解決方案會更具優勢,所以目前國內有錢的互聯網公司選擇JFrog Artifactory作為企業級私有倉庫的比較多,本文的主要內容是演示如何通過Docker的方式來快速部署JFrog Artifactory并將其作為Devops自動發布系統的私有鏡像倉庫。
JFrog Artifactory鏡像倉庫部署
根據官方介紹JFrogArtifactory是目前全球唯一一個支持所有開發語言,任意維度的元數據檢索、跨語言正反向解析,并擁有深度遞歸、支持多活異地災備的企業級、高可用二進制制品管理倉庫。這里的二進制制品是指構建過程的輸出物,包括軟件包、測試報告,應用配置文件等可在服務器上直接運行或可查看的二進制軟件制品。
JFrog Artifactory支持多種倉庫類型,除了Docker鏡像倉庫外還支持Maven、Npm等其他類型的倉庫。在正式企業級環境中鏡像倉庫的部署要考慮高可用、擴展性等要求,關于這方面的部署方式可以參考其他官方文檔,本環節為了方便演示將采用Docker的方式進行部署,具體步驟如下:
1)、獲取最新JFrog Artifactory社區版Docker鏡像,命令如下:
$ docker pulldocker.bintray.io/jfrog/artifactory-jcr:latest
由于網絡原因上述下載過程可能會比較慢,有條件的讀者可以借助科學上網方式進行鏡像獲取。完成后可通過命令查看具體的鏡像信息,如下:
$ docker images
2)、創建數據卷。考慮到鏡像倉庫作為持久化存儲服務,這里為其創建單獨的數據卷,命令如下:
#創建數據目錄
$ mkdir -p ~/docker/volume/artifactory
#切換到上述目錄后執行數據卷創建命令
$ docker volume create data_artifactory
3)、運行Docker容器,命令如下:
$ docker run --name jfrog-artifactory -d-v data_artifactory:/var/opt/jfrog/artifactory -p 8081:8081 -p 8082:8082docker.bintray.io/jfrog/artifactory-jcr:latest
完成上述操作后,如果容器運行成功,此時瀏覽器輸入訪問地址:http://127.0.0.1:8082,將會顯示如圖所示界面:
輸入初始密碼(admin/password)后,會繼續跳轉到管理員密碼重置界面,如圖所示:
依據步驟設置好管理員密碼。之后會繼續要求設置如訂閱郵箱、訪問網站域名、代理配置等信息,這里可以暫時忽略直接跳到倉庫創建的頁面,如圖所示:
從上圖可以看到JFrogArtifactory支持多種類型的倉庫,例如Maven私有倉庫也可以通過JFrog Artifactory來進行配置,由于是社區版所以很多其他類型的倉庫并未免費開放!這里我們只選擇創建Docker鏡像倉庫,創建后效果如圖所示:
如上圖所示,默認創建了一個RepositoryKey為docker-local的本地倉庫。在實際工作場景中為了便于Docker鏡像的管理,可以分別為同一代碼空間的項目創建單獨的鏡像倉庫,例如我們本書中所有的Spring Cloud實戰項目創建一個單獨鏡像倉庫,點擊右上角“New LocalRepository”,如圖所示:
到這里JFrog Repository容器鏡像倉庫的基本部署工作就完成了,后面自動化發布系統中的CI/CD流程將以此為基礎實現Docker鏡像的存儲、分發!關注我后續的內容將向你介紹如何構建一套完整的CI/CD自動發布系統!
https://www.linuxprobe.com/docker-private-image.html