共計(jì) 4126 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。
這篇文章主要介紹企業(yè)級(jí) Docker Registry 開源工具 Harbor 怎么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
將學(xué)習(xí)到怎樣使用 Harbor 去完成以下任務(wù):
管理你的項(xiàng)目
管理一個(gè)項(xiàng)目中的成員
同步一個(gè)項(xiàng)目中的 registry 到遠(yuǎn)端的 registry
檢索項(xiàng)目和鏡像源
如果你是系統(tǒng)管理員,可以學(xué)習(xí)如何管理你的 Harbor 系統(tǒng):
管理用戶
管理目標(biāo)鏡像
管理同步策略(多個(gè) registry 之間的鏡像同步)
使用 docker 客戶端程序上傳下載鏡像文件(docker pull/push images)
刪除倉庫和鏡像文件
## 基于角色的訪問控制 RBAC (Role Based Access Control)在 Harbor 中被支持,目前會(huì)支持四種具有不同權(quán)限的角色:
游客: 游客角色只對一個(gè)指定的項(xiàng)目有只讀權(quán)限。
開發(fā)者: 開發(fā)者對一個(gè)項(xiàng)目具有讀寫權(quán)限
項(xiàng)目管理員: 當(dāng)創(chuàng)建一個(gè)新項(xiàng)目的時(shí)候,該用戶將被自動(dòng)分配為項(xiàng)目管理員的角色去管理整個(gè)項(xiàng)目。除過讀寫特權(quán)之外,項(xiàng)目管理員也有其他方面的管理特權(quán),比如添加和移除項(xiàng)目成員。
系統(tǒng)管理員: 系統(tǒng)管理員有著最大的權(quán)限,也就是系統(tǒng)默認(rèn)的 admin 用戶。除了上述提到權(quán)限之外,系統(tǒng)管理員也有所有的項(xiàng)目權(quán)限,并且可以將一個(gè)普通用戶提升成管理員,同時(shí)也可以刪除用戶。系統(tǒng)默認(rèn)的公開項(xiàng)目 library 也屬于系統(tǒng)管理員。
匿名用戶: 當(dāng)一個(gè)用戶沒有登錄的時(shí)候,該用戶就被認(rèn)為匿名用戶。任何一個(gè)匿名用戶都無法訪問私有的項(xiàng)目,并且對所有的公開項(xiàng)目有只讀權(quán)限。
## 用戶賬戶 作為一個(gè)用戶,可以通過自注冊程序去注冊一個(gè)賬戶。用戶名和郵箱地址必須在 Harbor 中唯一。密碼必須包含至少 7 個(gè)字符,其中必須包含一個(gè)大寫一個(gè)小寫以及一個(gè)數(shù)字字符。
如果管理員已經(jīng)配置了 LDAP/AD 作為用戶認(rèn)證源,注冊一步可以可以忽略的。LDAP/AD 的用戶 id 可以被用來直接登錄 Harbor。
如果你忘記了自己的密碼,可以通過以下步驟進(jìn)行重置密碼:
在登錄頁面點(diǎn)擊忘記密碼
輸入注冊時(shí)候填寫的郵件地址,郵箱將會(huì)收到一封修改密碼的郵件
接受到郵件后,點(diǎn)擊郵件里面的鏈接將跳轉(zhuǎn)到密碼重置頁面
輸入新密碼后點(diǎn)擊提交即可
## 管理項(xiàng)目 在 Harbor 中的一個(gè)項(xiàng)目包含一個(gè)應(yīng)用的所有倉庫.RBAC(基于角色的權(quán)限控制)被應(yīng)用在一個(gè)項(xiàng)目中。在 Harbor 中分為兩種項(xiàng)目公開和私有:
Public: 所有用戶對于公開項(xiàng)目都有讀權(quán)限, 這種方式對于你想把一些倉庫分享給其他人的時(shí)候, 是非常方便的.
Private: 私有項(xiàng)目只能被有特定用戶權(quán)限的人去訪問。這種方式對于內(nèi)部團(tuán)隊(duì)來說共享也是比較方便的。
在你登錄 Harbor 之后就可以創(chuàng)建項(xiàng)目。點(diǎn)擊 Public 復(fù)選框?qū)⑹乖擁?xiàng)目變成公開項(xiàng)目。
項(xiàng)目被創(chuàng)建之后,用戶就可以瀏覽倉庫,用戶以及使用導(dǎo)航標(biāo)簽的一些日志。
所有的操作日志將被通過點(diǎn)擊日志列出來,你可以通過高級(jí)搜索中用戶名,操作以及日期去搜索相關(guān)操作日志:
## 管理項(xiàng)目成員 ### 添加成員 你可以使用不同的角色去添加成員到已經(jīng)存在的項(xiàng)目。
### 更新和移除項(xiàng)目成員 你可以通過點(diǎn)擊編輯和刪除按鈕來更新和移除成員。
## 鏡像復(fù)制 如果你是系統(tǒng)管理員,你可以將倉庫中的鏡像文件同步到遠(yuǎn)端的 registry(也就是你的目標(biāo) Harbor) , 目前只有 Harbor 實(shí)例才支持作為一個(gè)目標(biāo)倉庫。因此,要使用鏡像復(fù)制功能,必須將 Harbor 在遠(yuǎn)端重新部署一份
注意: 該鏡像復(fù)制功能在 Harbor 0.3.5 之前和和 0.3.5 版本之后是不兼容的。
在項(xiàng)目主頁點(diǎn)擊復(fù)制,并點(diǎn)擊新增策略來進(jìn)行添加鏡像復(fù)制策略。目標(biāo) URL 即為遠(yuǎn)端的鏡像中心
測試連接成功之后就可以點(diǎn)擊確定進(jìn)行鏡像復(fù)制:
可以看到該復(fù)制任務(wù)正在進(jìn)行,并且顯示當(dāng)前復(fù)制的相關(guān)信息。底部會(huì)顯示該項(xiàng)目的整個(gè)復(fù)制進(jìn)度,以及每個(gè)倉庫復(fù)制的信息。
點(diǎn)擊右邊的日志可以查看每個(gè)倉庫鏡像同步的信息詳情。
復(fù)制完成之后就可以在遠(yuǎn)端 Harbor 中看到已經(jīng)同步過去的項(xiàng)目以及鏡像文件。
## 檢索項(xiàng)目和鏡像倉庫 在頂部搜索框中輸入一個(gè)關(guān)鍵字并查詢會(huì)列出所有匹配的項(xiàng)目和鏡像倉庫信息。搜索結(jié)果包含所有你有權(quán)限訪問的私有和公開鏡像。
## 管理員選項(xiàng) ### 管理用戶 管理員可以添加管理員角色給普通用戶,以提升權(quán)限,當(dāng)然也可以刪除某個(gè)用戶。
### 管理目標(biāo)(遠(yuǎn)端 Harbor) 用戶可以在管理員選項(xiàng)下的目標(biāo)按鈕下列出,添加和刪除復(fù)制策略,以及修改目標(biāo) Harbor。只有那些不被任何策略引用的目的 Harbor 才能被修改編輯。
### 管理復(fù)制 用戶可以在管理員選項(xiàng)下的復(fù)制按鈕下列出,編輯和啟用或者禁止策略。再編輯策略之前需要確認(rèn)策略已經(jīng)被禁掉。
## 使用 Docker 客戶端命令進(jìn)行 pull 和 push 鏡像(下載和上傳鏡像)
注意: Harbor 只支持 Registry V2 的 API,因此你的 docker 客戶端版本必須在 1.6.0 以上才行。
Harbor 默認(rèn)支持的是 HTTP, 但是 Docker 客戶端默認(rèn)會(huì)使用 HTTPS 去連接鏡像倉庫,因此當(dāng)你 pull 或 push 鏡像的時(shí)候出現(xiàn)以下錯(cuò)誤提示:
FATA[0002] Error: Invalid registry endpoint https://localhost.com:5000/v1/: Get https://localhost.com:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry localhost.com:5000` to the daemon s arguments. In the case of HTTPS, if you have access to the registry s CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/localhost.com:5000/ca.crt
你只需要在 Docker daemon 的啟動(dòng)配置中加入以下參數(shù)就可以使用了。–insecure-registry ip:port(regirsty 的地址)在 Ubuntu 系列中默認(rèn)配置文件在 /etc/default/docker。在 Centos 系列中默認(rèn)配置文件在 /etc/sysconfig/docker 配置示例:
在 HTTPS 情況下,你需要能夠訪問 registry 的 CA 證書就行,不需要配置額外的參數(shù),一般的證書地址會(huì)放在以下位置。/etc/docker/certs.d/myregistrydomain.com:5000/ca.crt
### 下載鏡像文件(docker pull images) 如果項(xiàng)目中的鏡像文件是私有的,那么首先先登錄再去下載:
$ docker login 172.25.47.67
$ docker pull 172.25.47.67/pandora/pandora-redis:latest
注意: 用戶在操作的時(shí)候,只需要替換上面的 ip 地址為 harbor.cfg 中配置的 hostname(域名或者 ip).
### 上傳鏡像(docker push images) 在上傳鏡像之前,必須先在 Harbor 的 web 界面上創(chuàng)建一個(gè)對應(yīng)的項(xiàng)目,因?yàn)殓R像上傳上去是存儲(chǔ)在對應(yīng)項(xiàng)目中的。
首先,先使用 docker client 登錄:用戶名密碼為 Harbor 上面設(shè)置的用戶 / 密碼,并且相應(yīng)的權(quán)限和項(xiàng)目是一一對應(yīng)的,你的用戶也只能上傳屬于你自己項(xiàng)目的鏡像。
$ docker login 172.25.47.67
給鏡像打 tag:
$ docker tag ubuntu:14.04 172.25.47.67/pandora/ubuntu:14.04
上傳鏡像:
$ docker push 172.25.47.67/pandora/ubuntu:14.04
注意: 用戶在操作的時(shí)候,只需要替換上面的 ip 地址為 harbor.cfg 中配置的 hostname(域名或者 ip).
## 刪除鏡像倉庫
鏡像倉庫的刪除需要執(zhí)行兩步操作:
首先,在 Harbor 的 web 界面上刪除一個(gè)鏡像倉庫,這是一個(gè)軟刪除,Harbor 將不會(huì)再管理這個(gè)倉庫,但是倉庫中的鏡像都還是會(huì)在 registry 中存放(Harbor 的存儲(chǔ)中)。
注意: 如果 tagA 和 tagB 都指向相同的 image,在刪除 tagA 之后,tagB 也會(huì)被刪除。
接下來,使用 registry 的垃圾回收機(jī)制 (garbage collection(GC)) 去刪除文件. 在操作 GC 之前需要確定沒有人正在上傳鏡像或者 Harbor 沒有運(yùn)行。如果當(dāng) GC 正在運(yùn)行中的時(shí)候有人正在 push 鏡像,那么會(huì)有一些鏡像層 (images layers) 錯(cuò)誤刪除的風(fēng)險(xiǎn)。因此,在運(yùn)行 GC 之前,比較推薦的做法是先停掉 Harbor。
在部署 Harbor 的主機(jī)上運(yùn)行以下命令,可以預(yù)覽到收到影響的文件或者鏡像。
$ docker-compose stop
$ docker run -it --name gc --rm --volumes-from deploy_registry_1 registry:2.5.0 garbage-collect --dry-run /etc/registry/config.yml
注意: 上面的參數(shù) –dry-run 將會(huì)打印刪除的進(jìn)度 驗(yàn)證完刪除的測試之后,可以使用下面的命令進(jìn)行 GC 回收,并且重啟 Harbor。
$ docker run -it --name gc --rm --volumes-from deploy_registry_1 registry:2.5.0 garbage-collect /etc/registry/config.yml
$ docker-compose start
以上是“企業(yè)級(jí) Docker Registry 開源工具 Harbor 怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!