Docker registry 管理工具Portus

之前搭建了Shipyard,可以對鏡像、容器、Node進行管理,但在添加registry時出錯啦。

試錯1:剛開始以為是自己registry搭建的方式不對,沒有用ssl導(dǎo)致,改成ssl方式后,在Shipyard中添加倉庫失敗。

試錯2:以為自己安裝Shipyard的方式不對,按官網(wǎng)文檔-加上了TLS_CERT_PATH,但是Shipyard中添加倉庫失敗。

試錯3:在網(wǎng)上查到說Shipyard只支持registry v1 不支持registry v2,如要支持v2需自己重編譯 Shipyard。
于是開始了坑人的重編譯之旅,結(jié)果還是在容器中 運行docker被埋啦。

開始轉(zhuǎn)方向,不用Shipyard管理registry啦。

轉(zhuǎn)方向1:Nginx+ssl+registry v2,網(wǎng)上有很多這類的安裝方式,只不過將registry命令形式 換成 頁面展示形式,并不具有管理工具,于是拋棄了它。

轉(zhuǎn)方向2:Portus,看介紹很強大

Portus 是用于 Docker RegistryAPI(v2)的開源前端和授權(quán)工具,最低要求注冊表版本是 2.1。它可以作為授權(quán)服務(wù)器和用戶界面,用于新一代的 Docker Registry。
安全。Portus 實現(xiàn)了最新的 Docker Registry中定義的新的授權(quán)方案。它允許對你所有的鏡像進行細顆粒度控制,你可以決定哪個用戶和團隊可 push/pull 鏡像。
輕松管理用戶。 在 Portus 映射你的公司,可以定義任意數(shù)量的 team,并從 team 添加和移除用戶。Team 有三種類型的用戶:Viewers ,只能 pull 鏡像;Contributors,可以 push / pull 鏡像;Owners,類似 contributors,但可以從 team 添加或移除用戶。
搜索。Portus 提供你的私人注冊表的內(nèi)容的預(yù)覽,同時有一個快速搜索鏡像的功能。
Audit。所有相關(guān)事件都會被 Portus 自動記錄,可被管理員用戶分析。

搭建過程比較慢,主要是下載依賴鏡像慢。

yum -y install epel-release
yum -y install python-pip
pip install -U docker-compose
git clone https://github.com/SUSE/Portus.git
cd Portus
修改Gemfile和Gemfile.lock 的第一行:https://rubygems.org修改為“http://rubygems.org
compose-setup.sh -e server IP
#這里就是漫長的安裝過程啦,有人推薦先將所需的依賴鏡像下載,然后再安裝
 (Portus安裝依賴MariaDB,portus_web、rails4.2.2,Registry2.3.1,使用docker load 命令加載成鏡像)
看到如下信息表示,安裝成功。
Creating portus_db_1
Creating portus_crono_1
Creating portus_web_1
Creating portus_registry_1
Waiting for mariadb to be ready in 5 seconds
Portus: configuring database... failed, will retry
Waiting for mariadb to be ready in 5 seconds
Portus: configuring database... [SUCCESS]

###################
#     SUCCESS     #
###################

在SUCCESS下面則是提示信息,告訴你怎么使用Portus,根據(jù)提示步驟操作即可

Make sure port 3000 and 5000 are open on host 192.168.220.123

Open http://192.168.220.123:3000 with your browser and perform the following steps:

  1. Create an admin account
  2. You will be redirected to a page where you have to register the registry. In this form:
    - Choose a custom name for the registry.
    - Enter 192.168.220.123:5000 as the hostname.
    - Do *not* check the "Use SSL" checkbox, since this setup is not using SSL.

Perform the following actions on the docker hosts that need to interact with your registry:

  - Ensure the docker daemon is started with the '--insecure-registry 192.168.220.123:5000'
  - Perform the docker login.
To authenticate against your registry using the docker cli do:

  $ docker login -u <portus username> -p <password> -e <email> 192.168.220.123:5000

To push an image to the private registry:

  $ docker pull busybox
  $ docker tag busybox 192.168.220.123:5000/<username>/busybox
  $ docker push 192.168.220.123:5000/<username>/busybox

下圖為當前Portus運行記錄,上傳了兩個鏡像 hello-world 和 webbase


Portus.jpg

在容器關(guān)閉后,想再次啟動
docker start portus_db_1 portus_web_1 portus_crono_1 portus_registry_1

提交代碼時分兩步

  1. docker login 192.168.220.123:5000
    輸入在portus中新建的用戶名和密碼
  2. docker push 192.168.220.123:5000/busybox

之前問登錄遇到: unauthorized: authentication required

問題: 在Teams-Create new team 點擊無響應(yīng),關(guān)于對registry的權(quán)限控制待測試。

總結(jié):此次安裝消耗時間過多
在不知道registry有v1 和 v2 ,也不知道shipyard官方不支持v2,排查問題消耗時間多。
在知道只支持registry v2 的情況下,為了得到 shipyard-registry v2 ,重編譯消耗時間多。
在轉(zhuǎn)方向后,沒有去看Nginx+ssl+registry 能達到什么效果,就先實施了,做了無用功。

歸結(jié)1:使用新東西時--存在很多未知,要先做調(diào)查。
歸結(jié)2:先有目標,判定是否能到預(yù)期目標,然后再執(zhí)行(很低級的一個錯誤,有煩躁的情緒在里面)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容