企業級Docker Registry開源工具Harbor的使用者使用指南
#使用者手冊 ##概述 該指導將引導你去使用Harbor的各個功能特性。你將學習到怎樣使用Harbor去完成以下任務:
- 管理你的專案
- 管理一個專案中的成員
- 同步一個專案中的registry到遠端的registry
- 檢索專案和映象源
- 如果你是系統管理員,可以學習如何管理你的Harbor系統:
- 管理使用者
- 管理目標映象
- 管理同步策略(多個registry之間的映象同步)
- 使用docker客戶端程式上傳下載映象檔案(docker pull/push images)
- 刪除倉庫和映象檔案
##基於角色的訪問控制 RBAC (Role Based Access Control)在Harbor中被支援,目前會支援四種具有不同許可權的角色:
-
遊客: 遊客角色只對一個指定的專案有
只讀
許可權。 -
開發者: 開發者對一個專案具有
讀寫
許可權 -
專案管理員: 當建立一個新專案的時候,該使用者將被自動分配為
專案管理員
的角色去管理整個專案。除過讀寫
特權之外,專案管理員也有其他方面的管理特權,比如新增和移除專案成員。 -
系統管理員:
系統管理員
有著最大的許可權,也就是系統預設的admin使用者。 除了上述提到許可權之外,系統管理員
也有所有的專案許可權,並且可以將一個普通使用者提升成管理員,同時也可以刪除使用者。系統預設的公開專案library
也屬於系統管理員。 -
匿名使用者: 當一個使用者沒有登入的時候,該使用者就被認為匿名使用者。任何一個匿名使用者都無法訪問私有的專案,並且對所有的公開專案有
只讀
##使用者賬戶 作為一個使用者,可以通過自注冊程式去註冊一個賬戶。使用者名稱和郵箱地址必須在Harbor中唯一。密碼必須包含至少7個字元,其中必須包含一個大寫一個小寫以及一個數字字元。
如果管理員已經配置了LDAP/AD作為使用者認證源,註冊一步可以可以忽略的。LDAP/AD的使用者id可以被用來直接登入Harbor。
如果你忘記了自己的密碼,可以通過以下步驟進行重置密碼:
- 在登入頁面點選
忘記密碼
- 輸入註冊時候填寫的郵件地址,郵箱將會收到一封修改密碼的郵件
- 接受到郵件後,點選郵件裡面的連結將跳轉到密碼重置頁面
- 輸入新密碼後點擊提交即可
##管理專案 在Harbor中的一個專案包含一個應用的所有倉庫.RBAC(基於角色的許可權控制)被應用在一個專案中。在Harbor中分為兩種專案公開
私有
:
- Public: 所有使用者對於公開專案都有讀許可權,這種方式對於你想把一些倉庫分享給其他人的時候,是非常方便的.
- Private: 私有專案只能被有特定使用者許可權的人去訪問。這種方式對於內部團隊來說共享也是比較方便的。
在你登入Harbor之後就可以建立專案。點選"Public"複選框將使該專案變成公開專案。
專案被建立之後,使用者就可以瀏覽倉庫,使用者以及使用導航標籤的一些日誌。
所有的操作日誌將被通過點選日誌
列出來,你可以通過高階搜尋中使用者名稱,操作以及日期去搜索相關操作日誌:
##管理專案成員 ###新增成員 你可以使用不同的角色去新增成員到已經存在的專案。
###更新和移除專案成員 你可以通過點選編輯和刪除按鈕來更新和移除成員。
##映象複製 如果你是系統管理員,你可以將倉庫中的映象檔案同步到遠端的registry(也就是你的目標Harbor) , 目前只有Harbor例項才支援作為一個目標倉庫。因此,要使用映象複製功能,必須將Harbor在遠端重新部署一份
注意: 該映象複製功能在Harbor 0.3.5之前和和0.3.5版本之後是不相容的。
在專案主頁點選複製
,並點選新增策略
來進行新增映象複製策略。目標URL即為遠端的映象中心
測試連線成功之後就可以點選確定進行映象複製:
可以看到該複製任務正在進行,並且顯示當前複製的相關資訊。底部會顯示該專案的整個複製進度,以及每個倉庫複製的資訊。
點選右邊的日誌可以檢視每個倉庫映象同步的資訊詳情。
複製完成之後就可以在遠端Harbor中看到已經同步過去的專案以及映象檔案。
##檢索專案和映象倉庫 在頂部搜尋框中輸入一個關鍵字並查詢會列出所有匹配的專案和映象倉庫資訊。搜尋結果包含所有你有許可權訪問的私有和公開映象。
##管理員選項 ###管理使用者 管理員可以新增管理員
角色給普通使用者,以提升許可權,當然也可以刪除某個使用者。
###管理目標(遠端Harbor) 使用者可以在管理員選項下
的目標
按鈕下列出,新增和刪除複製策略,以及修改目標Harbor。只有那些不被任何策略引用的目的Harbor才能被修改編輯。
###管理複製 使用者可以在管理員選項下
的複製
按鈕下列出,編輯和啟用或者禁止策略。再編輯策略之前需要確認策略已經被禁掉。
##使用Docker 客戶端命令進行pull和push映象(下載和上傳映象)
注意: Harbor只支援Registry V2的API,因此你的docker客戶端版本必須在1.6.0以上才行。
Harbor預設支援的是HTTP,但是Docker客戶端預設會使用HTTPS去連線映象倉庫,因此當你pull或push映象的時候出現以下錯誤提示:
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的啟動配置中加入以下引數就可以使用了。 --insecure-registry ip:port(regirsty的地址)
在Ubuntu系列中預設配置檔案在/etc/default/docker
。 在Centos系列中預設配置檔案在/etc/sysconfig/docker
配置示例:
在HTTPS情況下,你需要能夠訪問registry的CA證書就行,不需要配置額外的引數,一般的證書地址會放在以下位置。 /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt
###下載映象檔案(docker pull images) 如果專案中的映象檔案是私有的,那麼首先先登入再去下載:
$ docker login 172.25.47.67
$ docker pull 172.25.47.67/pandora/pandora-redis:latest
注意: 使用者在操作的時候,只需要替換上面的ip地址為harbor.cfg中配置的hostname(域名或者ip).
###上傳映象(docker push images) 在上傳映象之前,必須先在Harbor的web介面上建立一個對應的專案,因為映象上傳上去是儲存在對應專案中的。
首先,先使用docker client 登入: 使用者名稱密碼為Harbor上面設定的使用者/密碼,並且相應的許可權和專案是一一對應的,你的使用者也只能上傳屬於你自己專案的映象。
$ 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
注意: 使用者在操作的時候,只需要替換上面的ip地址為harbor.cfg中配置的hostname(域名或者ip).
##刪除映象倉庫
映象倉庫的刪除需要執行兩步操作:
首先,在Harbor的web介面上刪除一個映象倉庫,這是一個軟刪除,Harbor將不會再管理這個倉庫,但是倉庫中的映象都還是會在registry中存放(Harbor的儲存中)。
注意: 如果tagA和tagB都指向相同的image,在刪除tagA之後,tagB也會被刪除。
接下來,使用registry的垃圾回收機制( garbage collection(GC))去刪除檔案.在操作GC之前需要確定沒有人正在上傳映象或者Harbor沒有執行。如果當GC正在執行中的時候有人正在push映象,那麼會有一些映象層(images layers)錯誤刪除的風險。因此,在執行GC之前,比較推薦的做法是先停掉Harbor。
在部署Harbor的主機上執行以下命令,可以預覽到收到影響的檔案或者映象。
$ 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
注意: 上面的引數"--dry-run" 將會列印刪除的進度 驗證完刪除的測試之後,可以使用下面的命令進行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
有關更多GC的詳細資訊, 請看連線 GC.