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

什麼是Humpback?

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

在回答這個問題前,咱們得先了解下什麼的 Docker(哦,如今叫 Moby,文中仍是繼續稱 Docker)。github

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

簡單來講,Docker能夠幫助咱們以容器的方式快速運行APP。redis

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

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

那如今來回答什麼是 HumpbackHumpback 是一個簡單易用的輕量級容器管理平臺,一個私有倉庫管理平臺,一個容器調度平臺。瀏覽器

那它能作什麼呢?緩存

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

注:星級表示功能的經常使用程度,五星爲最經常使用的功能。bash

差點忘了貼官方文檔和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好用,有須要就趕忙體驗下吧。暫時不須要,也能夠體驗下,吹牛也能多一些套路,並且,萬一之後用獲得呢。

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

另附上幾張操做圖:

建立容器界面:
建立容器界面

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

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

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

相關文章
相關標籤/搜索