什么是Humpback?
項目開源地址在此: Humpback Source,覺得有用或者有趣,歡迎給個star~
在回答這個問題前,我們得先了解下什么的 Docker
(哦,現在叫 Moby
,文中還是繼續稱 Docker
)。
在 Docker-百度百科 中,對 Docker
已經解釋得很清楚了。
簡單來說,Docker可以幫助我們以容器的方式快速運行APP。
由於一個鏡像就是一個完整的 APP
,只要我們構建好鏡像,我們就可以快速,一致的在多個地方運行同樣的 APP
。這雖然解決了 APP
一致性的這個問題,但是,我們在部署的時候,依然要遠程到服務器上,拖鏡像,通過一長串命令(端口映射,磁盤映射,環境變量等的配置)來啟動Docker容器。
這是一個重復而容易出錯的過程,Humpback
就是為了解決該問題而生(當然,我們已經擴展了更多的功能:如集群管理,鏡像構建,私有倉庫管理等)。
那現在來回答什么是 Humpback
,Humpback
是一個簡單易用的輕量級容器管理平台,一個私有倉庫管理平台,一個容器調度平台。
那它能做什么呢?
- 以
Web界面
的方式,來進行容器的創建/運行以及管理(啟動,停止,重啟,監控,應用版本升級/回退)。 ★★★★★ - 鏡像構建,將鏡像所需文件和Dockfile打包為
.tar.gz
文件,就可以打包為一個鏡像 ★★ - 管理私有倉庫,將自己部署好的私有倉庫,納入到humpback的管理中。 ★★★★
- 集群容器調度,當我們部署一個app時,只需要告訴humpback,我要部署多少個實例,humpback會自動根據配置進行集群部署,並通過WebHook通知部署結果。 ★★★
- 對容器管理進行權限設定。 ★★
注:星級表示功能的常用程度,五星為最常用的功能。
差點忘了貼官方文檔和Github地址,罪過!
部署Humbpack
說了這個多,有沒有想嘗試下使用 Humbpack
進行容器管理?易用,不僅體現在真正的使用上,還需要能夠簡單部署。
接着,我們就看一下應該如何部署 Humpback
:
- 安裝
Docker
(如果是Windows機器,那通過虛擬機(Hyper-V or Vmware)安裝Linux就算是第0步吧)
這是前置條件(需要1.8.3以上),關於Docker的安裝,我就不詳細說明了,我相信有興趣體驗Humbpack的,Docker安裝肯定不在話下。
- 部署
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
進行登錄。
- 部署
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
也部署成功了。
- 將機器(虛擬機)納入Humpback管理
打開我們第2步運行起來的Web管理平台,登錄之后,創建一個Group:
並將部署了 humpback-agent
的機器IP,添加到Servers屬性中,如圖:
,然后進入我們的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
其中可能會遇到的問題:
- wget沒裝,手動安裝wget。
- make redis 出錯,需要安裝依賴項
- 需要先登錄到服務器
- 等等
但是如果用Humpback呢?
- 打開Web管理界面的添加容器頁面
- 填寫容器相關信息如下:
- 點擊確定,OK,妥了。
在這樣的場景下,兩者的差距並不大。
接着,我想臨時停一下Redis:
常規做法:
- 登錄到服務器(又要登錄,煩不煩)
- 找到這個服務(通過名稱找,哎呀,命令記不住了)
- 停止
如果用Humpback呢?
- 在容器管理界面,點擊Stop,OK,妥了
此時有
Humpback
就簡單多了。
再接着,發現一台redis不夠了,又一台服務器,需要部署redis。
常規做法:只能把之前的部署步驟再做一次。
如果這台服務器也被Humpback管理中,那么用Humpback僅僅是創建一個容器的事情。
場景二
在場景一中,我們是使用三方庫,那這個場景呢,我們用來部署一個Web程序。
常規部署過程:
- 打包程序
- 登錄服務器,把程序拷貝到服務器上
- 修改配置文件
- 運行程序
如果有多台,那么就要重復N次這樣的步驟
那如果是Humpback呢?
- 構建鏡像
- 創建容器並運行
如果有多台要部署,只需要批量創建容器即可,一次搞定
第二天,發布了一個新版本
常規部署過程:
- 重新打包程序,拷貝到服務器上(還要擔心覆蓋出錯)
- 修改配置文件
- 重新啟動程序
Humpback中:
- 構建新版本鏡像
- 在容器管理中,點擊升級,選擇新版本即可。
在這個過程,差異還不是太明顯,不過明顯humpback更快
第三天,發現新版本程序,有個嚴重bug(沒有bug的程序不是好程序)
這下常規部署過程就折騰了,相當於重新發布一個歷史版本,而且此時還不能保證和歷史版本一致。
但,如果是humpback,在容器管理界面,點擊升級(實際可以升級/降級),然后選中歷史版本,點擊確定,就完完整整的還原到歷史版本上去了。
總結
總之,Humpback好用,有需要就趕緊體驗下吧。暫時不需要,也可以體驗下,吹牛也能多一些套路,而且,萬一以后用得到呢。
當然,此文提到的僅僅的基礎用法,但我覺得,這足夠了。要想體驗更復雜的玩法,強烈建議參考官方文檔。
另附上幾張操作圖:
創建容器界面:
容器詳細信息界面:
容器版本升級界面
容器監控界面