1. Harbor簡介
Harbor(港口,港灣)是一個用於存儲和分發Docker鏡像的企業級Registry服務器。除了Harbor這個私有鏡像倉庫之外,還有Docker官方提供的Registry。相對Registry,Harbor具有很多優勢:
- 提供分層傳輸機制,優化網絡傳輸 Docker鏡像是是分層的,而如果每次傳輸都使用全量文件(所以
用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID爲標識,確定
傳輸的對象。 - 提供WEB界面,優化用戶體驗 只用鏡像的名字來進行上傳下載顯然很不方便,需要有一個用戶界
面可以支持登陸、搜索功能,包括區分公有、私有鏡像。 - 支持水平擴展集羣 當有用戶對鏡像的上傳下載操作集中在某服務器,需要對相應的訪問壓力作分
解。 - 良好的安全機制 企業中的開發團隊有很多不同的職位,對於不同的職位人員,分配不同的權限,
具有更好的安全性。
官網地址:https://goharbor.io/
2. Harbor安裝
在安裝Harbor之前,需要先安裝Docker和docker-compose,安裝教程可參考:《Docker入門,這裏沒有廢話》。
Harbor下載地址:https://github.com/goharbor/harbor/releases,本教程使用的是:1.10.1版本
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-E80kD8nA-1590408705221)(assets/Harbor下載地址.png)]
github下載不是一般的慢,所以當然要非常貼心的給你們準備好百度雲下載地址(提取碼:wa3z)
2.1 上傳並解壓
tar -zxf harbor-offline-installer-v1.10.1.tgz
2.2 修改配置
進入harbor
目錄,使用vim harbor.yml
修改以下配置項:
hostname: 192.168.1.17
port: 85
###並把https註釋掉,不然在安裝的時候會報錯:ERROR:root:Error: The protocol is https but attribute ssl_cert is not set
#https:
#port: 443
#certificate: /your/certificate/path
#private_key: /your/private/key/path
2.3 安裝
./prepare
./install.sh
2.4 啓動
# 啓動
docker-compose up -d
# 停止
docker-compose stop
# 重新啓動
docker-compose restart
2.5 訪問
瀏覽器訪問http://192.168.1.17:85
,默認賬號和密碼:admin/Harbor12345
3. 創建項目和用戶
3.1 項目
Harbor的項目分爲公開和私有的:
- 公開項目:所有用戶都可以訪問,通常存放公共的鏡像,默認有一個library公開項目。
- 私有項目:只有授權用戶纔可以訪問,通常存放項目本身的鏡像。
這裏,我們創建一個minimall
私有項目:
3.2 用戶
切換到系統管理->用戶管理->新建用戶。
3.3 給項目分配用戶
4. 把鏡像上傳到harbor
- 給鏡像打上標籤
docker tag docker-compose_registry-server 192.168.1.17:85/minimall/docker-compose_registry-server
- 推送鏡像
docker push 192.168.1.17:85/minimall/docker-compose_registry-server
如果是報以下錯誤,是因爲Docker沒有把Harbor加入信任列表。
The push refers to repository [192.168.1.17:85/minimall/docker-compose_registry-server]
Get https://192.168.1.17:85/v2/: http: server gave HTTP response to HTTPS client
- 把harbor地址加入Docker信任列表
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.1.17:85"]
}
重啓docker即可。
- 再次推送鏡像,會提示權限不足
denied: requested access to the resource is denied
- 權限不足,我們需要先登錄harbor
docker login -u admin -p Harbor12345 192.168.1.17:85
- 登錄成功之後,再推送鏡像
5. 從harbor下載鏡像
從harbor下載鏡像,要確保已經登錄harbor。
docker pull 192.168.1.17:85/minimall/docker-compose_registry-server