一個簡單易用的容器管理平台-Humpback


什么是Humpback?

項目開源地址在此: Humpback Source,覺得有用或者有趣,歡迎給個star~

在回答這個問題前,我們得先了解下什么的 Docker(哦,現在叫 Moby,文中還是繼續稱 Docker)。

Docker-百度百科 中,對 Docker 已經解釋得很清楚了。

簡單來說,Docker可以幫助我們以容器的方式快速運行APP。

由於一個鏡像就是一個完整的 APP,只要我們構建好鏡像,我們就可以快速,一致的在多個地方運行同樣的 APP。這雖然解決了 APP 一致性的這個問題,但是,我們在部署的時候,依然要遠程到服務器上,拖鏡像,通過一長串命令(端口映射,磁盤映射,環境變量等的配置)來啟動Docker容器。

這是一個重復而容易出錯的過程,Humpback 就是為了解決該問題而生(當然,我們已經擴展了更多的功能:如集群管理,鏡像構建,私有倉庫管理等)。

那現在來回答什么是 HumpbackHumpback 是一個簡單易用的輕量級容器管理平台,一個私有倉庫管理平台,一個容器調度平台。

那它能做什么呢?

  1. Web界面 的方式,來進行容器的創建/運行以及管理(啟動,停止,重啟,監控,應用版本升級/回退)。 ★★★★★
  2. 鏡像構建,將鏡像所需文件和Dockfile打包為 .tar.gz 文件,就可以打包為一個鏡像 ★★
  3. 管理私有倉庫,將自己部署好的私有倉庫,納入到humpback的管理中。 ★★★★
  4. 集群容器調度,當我們部署一個app時,只需要告訴humpback,我要部署多少個實例,humpback會自動根據配置進行集群部署,並通過WebHook通知部署結果。 ★★★
  5. 對容器管理進行權限設定。 ★★

注:星級表示功能的常用程度,五星為最常用的功能。

差點忘了貼官方文檔和Github地址,罪過!

Humpback官方文檔

Github 開源匯總地址

Github Humpback 組織

部署Humbpack

說了這個多,有沒有想嘗試下使用 Humbpack 進行容器管理?易用,不僅體現在真正的使用上,還需要能夠簡單部署。

接着,我們就看一下應該如何部署 Humpback

  1. 安裝 Docker (如果是Windows機器,那通過虛擬機(Hyper-V or Vmware)安裝Linux就算是第0步吧)

這是前置條件(需要1.8.3以上),關於Docker的安裝,我就不詳細說明了,我相信有興趣體驗Humbpack的,Docker安裝肯定不在話下。

  1. 部署 Humpback 管理站點

既然是用的Docker,那毫無疑問,我們已經把Humpback-web打包成了一個鏡像,只需要pull下來即可使用。在確認docker已經安裝成功的前提下,執行如下命令,即可安裝好 Humbpack 的管理站點。

# 創建一個目錄,用來存儲humpback-web的數據庫文件
mkdir -p /opt/app/humpback-web

# 完整粘貼即可,利用docker啟動容器。其中如果要修改監聽端口,就把8000改掉。
docker run -d --net=host --restart=always \
-e HUMPBACK_LISTEN_PORT=8000 \
-v /opt/app/humpback-web/dbFiles:/humpback-web/dbFiles \
--name humpback-web \
humpbacks/humpback-web:1.0.0 

啟動成功之后,訪問 http://localhost:8000 來確定是否部署成功。
如果要在宿主機訪問,請使用虛擬機綁定的IP地址,另外,需要注意防火牆。
如果能夠在瀏覽器中看到登錄界面,那么就可以輸入默認超級管理員賬戶:admin,密碼:123456 進行登錄。

  1. 部署 Humpback-agent

從項目名稱就很容易看出,這貨就是一個代理,為Humpback管理站點提供數據的。

需要先在要被管理的機器上安裝Docker環境(如果就在humpback這台虛擬機中試驗,可以跳過,因為已經安裝Docker),之后輸入 docker version 查看一下版本號,我們主要關注其中的 API Version(待會要用)。

老規矩,我們的 humpback-agent 也必然是一個鏡像,那么執行如下方式安裝下:

# 為了簡單使用,先不考慮集群功能
# 注意,之前我們在 docker version 中記錄的 API Version 要排上用場了,
# 以下命令中有個環境變量 DOCKER_API_VERSION ,需要被設定為我們記錄的API VERSION的值。
docker run -d -ti --net=host --restart=always \
-e DOCKER_API_VERSION=v1.21 \
-v /var/run/:/var/run/:rw \
--name=humpback-agent \
humpbacks/humpback-agent:1.0.0

當啟動成功之后,我們的 humpback-agent 也部署成功了。

  1. 將機器(虛擬機)納入Humpback管理

打開我們第2步運行起來的Web管理平台,登錄之后,創建一個Group:
Humpback Group List
並將部署了 humpback-agent 的機器IP,添加到Servers屬性中,如圖:
Humpback Add Group
,然后進入我們的Group就能看到我們的機器和容器了。
Humpback Add Group
至此,我們的Humback已經可用了,當然,這僅僅部署了一部分功能。如果需要私有倉庫和集群,參考官方文檔進行部署即可。

舉個栗子

光說不練,等於白干。現在,我們已經部署好 Humpback 了,那我們就來簡單使用下。

場景一

假設有如下場景,我們想要部署一個Redis來做緩存。

官方提供的操作過程:

# 遠程登錄到服務器之后
$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz
$ tar xzf redis-3.2.8.tar.gz
$ cd redis-3.2.8
$ make

其中可能會遇到的問題:

  1. wget沒裝,手動安裝wget。
  2. make redis 出錯,需要安裝依賴項
  3. 需要先登錄到服務器
  4. 等等

但是如果用Humpback呢?

  1. 打開Web管理界面的添加容器頁面
  2. 填寫容器相關信息如下:
  3. 點擊確定,OK,妥了。

在這樣的場景下,兩者的差距並不大。

接着,我想臨時停一下Redis:

常規做法:

  1. 登錄到服務器(又要登錄,煩不煩)
  2. 找到這個服務(通過名稱找,哎呀,命令記不住了)
  3. 停止

如果用Humpback呢?

  1. 在容器管理界面,點擊Stop,OK,妥了

此時有 Humpback 就簡單多了。

再接着,發現一台redis不夠了,又一台服務器,需要部署redis。

常規做法:只能把之前的部署步驟再做一次。

如果這台服務器也被Humpback管理中,那么用Humpback僅僅是創建一個容器的事情。

場景二

在場景一中,我們是使用三方庫,那這個場景呢,我們用來部署一個Web程序。

常規部署過程:

  1. 打包程序
  2. 登錄服務器,把程序拷貝到服務器上
  3. 修改配置文件
  4. 運行程序

如果有多台,那么就要重復N次這樣的步驟

那如果是Humpback呢?

  1. 構建鏡像
  2. 創建容器並運行

如果有多台要部署,只需要批量創建容器即可,一次搞定

第二天,發布了一個新版本

常規部署過程:

  1. 重新打包程序,拷貝到服務器上(還要擔心覆蓋出錯)
  2. 修改配置文件
  3. 重新啟動程序

Humpback中:

  1. 構建新版本鏡像
  2. 在容器管理中,點擊升級,選擇新版本即可。

在這個過程,差異還不是太明顯,不過明顯humpback更快

第三天,發現新版本程序,有個嚴重bug(沒有bug的程序不是好程序)

這下常規部署過程就折騰了,相當於重新發布一個歷史版本,而且此時還不能保證和歷史版本一致。

但,如果是humpback,在容器管理界面,點擊升級(實際可以升級/降級),然后選中歷史版本,點擊確定,就完完整整的還原到歷史版本上去了。

總結

總之,Humpback好用,有需要就趕緊體驗下吧。暫時不需要,也可以體驗下,吹牛也能多一些套路,而且,萬一以后用得到呢。

當然,此文提到的僅僅的基礎用法,但我覺得,這足夠了。要想體驗更復雜的玩法,強烈建議參考官方文檔。

另附上幾張操作圖:

創建容器界面:
創建容器界面

容器詳細信息界面:
容器詳細信息界面:

容器版本升級界面
容器版本升級界面

容器監控界面
容器監控界面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM