1. Harbor介紹
Harbor是由VMware開源的企業(yè)級的Docker Registry管理項(xiàng)目帖族,包括權(quán)限管理绳泉、LDAP、日志審核伦意、管理界面火窒,自我注冊、鏡像復(fù)制等功能驮肉。
Harbor相對于Docker Registry的優(yōu)點(diǎn):
- 有管理界面熏矿,管理起來比較方便
- 支持鏡像同步和集群部署
- 很好的和K8s集成
2. 環(huán)境和軟件準(zhǔn)備
本次演示在Linux CentOs7系統(tǒng)上操作,準(zhǔn)備以下兩臺機(jī)器作為Harbor集群:
192.168.1.91 ==> Harbor1
192.168.1.92 ==> Harbor2
其他需要安裝的軟件及版本:
- Docker:version 18.09.6 (由于基于Docker Registry V2版本,所以Docker版本不能低于1.10.0)
- Docker-compose:version 1.22.0(由于Harbor用的最新版1.8.0票编,需要Docker-compose支持1.18.0以上)
- Harbor:version 1.8.0
注意: Harbor的所有服務(wù)組件都是在Docker中部署的褪储,所以官方安裝使用Docker-compose快速部署,所以才需要安裝Docker和Docker-compose
2.1 Docker安裝
直接使用以下命令慧域,下載官方的shell腳本執(zhí)行安裝即可鲤竹。
sudo yum -y update
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
在centos7系統(tǒng)下,啟動docker昔榴,只需要執(zhí)行命令
sudo systemctl start docker.service
2.2 Docker-compose安裝
使用以下命令辛藻,即可快速安裝
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3. Harbor服務(wù)搭建
3.1 下載Harbor安裝文件
從github harbor官網(wǎng)的release頁面下載1.8.0版本的安裝包
- 下載在線安裝包
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.0.tgz
tar xvf harbor-online-installer-v1.8.0.tgz
- 下載離線安裝包
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz
tar xvf harbor-offline-installer-v1.8.0.tgz
3.2 配置Harbor
我們以配置192.168.1.91為例來進(jìn)行說明,解壓縮之后互订,打開harbor.yml文件進(jìn)行編輯吱肌。
- 找到hostname屬性,將值改為192.168.1.91
- 找到port屬性屁奏,將值改為8084(這里我們用8084作為我們的訪問端口)
- 找到harbor_admin_password屬性用于設(shè)置管理界面默認(rèn)賬號admin的登陸密碼岩榆。
- 找到password屬性,用于設(shè)置Harbor DB的root賬號的密碼
其他都可以保持默認(rèn)值就好坟瓢。這里我們暫時(shí)使用http訪問,不開啟https訪問犹撒。
3.3 啟動Harbor
修改完配置文件后折联,我們在當(dāng)前目錄執(zhí)行sh install.sh腳本,Harbor服務(wù)會自動生成docker-compose.yml并下載依賴的鏡像识颊,然后檢測并按照順序依次啟動各個(gè)服務(wù)诚镰。
執(zhí)行完install.sh腳本后,我們就可以使用http://192.168.1.91:8084來訪問我們的管理界面了
3.4 登錄Web Harbor
輸入用戶名(默認(rèn)用戶名為admin)和密碼(密碼為修改配置文件時(shí)設(shè)置的密碼)登錄系統(tǒng)祥款。
這里主要有以下幾個(gè)模塊:
- 項(xiàng)目:我們要上傳鏡像清笨,必須得先創(chuàng)建項(xiàng)目,并且給項(xiàng)目分配成員刃跛,項(xiàng)目配置為公開的話抠艾,則任何人都可以拉取鏡像。
- 用戶管理:主要是創(chuàng)建不同的用戶來管理鏡像桨昙,在真實(shí)情況下检号,不同的角色用戶可能對鏡像的操作是不一樣的。
- 倉庫管理:
- 同步管理:主要用于在多臺Harbor之間進(jìn)行鏡像同步管理
3.5 測試Harbor鏡像上傳
-
新建一個(gè)test項(xiàng)目
-
創(chuàng)建一個(gè)docker的用戶專門來測試上傳和拉取鏡像
-
把docker用戶添加到test項(xiàng)目的成員當(dāng)中去蛙酪,角色選擇開發(fā)人員就好齐苛。
- 上傳測試鏡像
我在192.168.1.92上面有一些測試鏡像,我們可以在它上面來進(jìn)行測試桂塞。
-
查看鏡像列表
我們通過以下命令來查看下有哪些鏡像
docker images
-
給鏡像打上TAG
通過上面的命令凹蜂,我們看到有一個(gè)nginx鏡像比較小,只有36M,我們就用它來測試吧玛痊。
用以下命令給鏡像打上TAG
docker tag nginx:latest 192.168.1.91:8084/test/nginx
注意: tag后面第一個(gè)參數(shù)是源鏡像(即本地鏡像nginx汰瘫,這里我們注意到nginx后面有個(gè)冒號跟了latest,是因?yàn)殓R像使用的tag是latest卿啡,上圖中我們可以看到那個(gè)tag號)吟吝。tag后面第二個(gè)參數(shù)就是我們要打TAG的鏡像,由于我們鏡像要上傳到192.168.1.91這個(gè)Registry中颈娜,則使用192.168.1.91:8084(記得帶上端口號8084)剑逃,test則是我們第一步創(chuàng)建的項(xiàng)目名稱,nginx則是鏡像名稱(當(dāng)然我們也可以在鏡像名稱后面加上:1.0這樣的tag號來標(biāo)記版本)
上傳鏡像
執(zhí)行以下命令來上傳鏡像
docker push 192.168.1.91:8084/test/nginx-photon
這里我們沒有指定tag號官辽,則會上傳并生成latest版本的鏡像蛹磺。
我們執(zhí)行上面命令之后,發(fā)現(xiàn)出錯(cuò)了同仆,果然理想是豐滿的萤捆,現(xiàn)實(shí)是骨感的,沒有那么一帆風(fēng)順的俗批。我們來看看出什么錯(cuò)了
Get https://192.168.1.91:8084/v2/: http: server gave HTTP response to HTTPS client
看來錯(cuò)誤提示還是很明顯的俗或,這是因?yàn)槲覀兊腍arbor配置的是http訪問,而Docker默認(rèn)是必須使用HTTPS的岁忘,既然知道原因了辛慰,就好解決了。
解決方案: 找到文件/etc/docker/daemon.json(沒有就創(chuàng)建一個(gè))干像,把"192.168.1.91:8084"
加入到"insecure-registries"
配置中帅腌。如下圖:
然后執(zhí)行以下指令并重啟docker讓配置生效
systemctl daemon-reload
systemctl restart docker.service
繼續(xù)執(zhí)行上傳命令,此時(shí)又出現(xiàn)了一個(gè)新的錯(cuò)誤denied: requested access to the resource is denied
這是因?yàn)槲覀儧]有登陸到Registry認(rèn)證麻汰,所以無法Push鏡像速客。
使用命令docker login 192.168.1.91:8084
進(jìn)行認(rèn)證即可,輸入剛才創(chuàng)建的docker用戶以及密碼五鲫。
再次上傳就可以成功push鏡像到Harbor了溺职。
3.6 配置Docker鏡像同步
我們將192.168.1.91作為主節(jié)點(diǎn),192.168.1.92作為從節(jié)點(diǎn)臣镣。當(dāng)我們往91上面Push鏡像的時(shí)候辅愿,自動復(fù)制到92上面。
我們到91進(jìn)行配置
-
創(chuàng)建倉庫
點(diǎn)擊系統(tǒng)管理 -> 倉庫管理 -> 新建目標(biāo)
這里需要注意的是忆某,目標(biāo)URL必須包含我們在92上創(chuàng)建的項(xiàng)目点待,也就是需要把鏡像同步到哪個(gè)項(xiàng)目(這里是我們剛才在92創(chuàng)建的test項(xiàng)目)。配置好了弃舒,可以點(diǎn)擊測試連接癞埠。 -
配置同步規(guī)則
點(diǎn)擊系統(tǒng)管理 -> 同步管理 -> 新建規(guī)則
這里同步模式状原,我們選擇基于推送的模式
源資源過濾器,我們使用默認(rèn)
目標(biāo)的Registry就選擇我們剛才第一步配置的倉庫
觸發(fā)模式苗踪,我們選擇事件驅(qū)動的方式颠区,然后勾選同步刪除,以及覆蓋 測試上傳鏡像到91
我們可以上傳一個(gè)鏡像到91通铲,觀察是否可以同步到92毕莱。如果可以正常同步,則說明沒有問題了颅夺。
另外:
啟動Harbor:docker-compose start
停止Harbor:docker-compose stop