1. 程式人生 > >Docker管理工具Web UI:DockerUI & Shipyard /portainer

Docker管理工具Web UI:DockerUI & Shipyard /portainer

docker針對於系統工程師或者開發人員來說操作比較簡單。一般我們習慣了對著黑黑的螢幕敲命令,docker pull,docker push,docker run,docker logs,docker ps等等。或者我們將常用的docker原生api封裝到我們的shell指令碼工具或者python指令碼工具中去使用管理docker。然而對於部分使用者,或者說非技術使用者去使用docker難度其實不小。因此一個明瞭的視覺化管理介面顯得非常重要了。萬物誕生總有其誕生的理由。可能只是為了服務某部分人。下面說一下兩個比較常用的docker管理平臺(dockerui和shiyard),以下都是經過本人親測的,讓我說說我的使用感受。

dockerui

部署方面:

直接執行命令,將dockerui容器映象下載到本地對映到9000埠,以容器的方式啟動即可。

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui

部署成功後,在伺服器中執行docker ps 確定容器是否起來了。

11

如上圖所示,即可判定容器已經起來了。

在瀏覽器輸入ip:9000即可訪問了。

11

介面如上,介面比較整潔。首頁的資訊分別是執行中的容器(附帶運行了的時間),容器建立記錄曲線,和映象建立記錄曲線。

11

上圖為容器管理的介面,上面列出了正在跑的容器情況,包括容器名,映象,命令,以及建立時間。針對於具體的容器可以點選進去管理,下圖我以名為lamp的容器為例說明:

11

容器管理基本如上圖,展示的資訊比較齊全,但是忽略了我們比較常用管理容器的方式之一,就是檢視日誌功能也就是cmd docker logs的展示,也少了連線到容器內部執行命令的視覺化操作,也就是cmd docker exec 。當然在這個容器管理介面我沒有發現任何和容器叢集有關的資訊,也就是說dockerui不能管理docker叢集,只能管理單機的容器,這個痛點相當大。

繼續容器網路管理介面

11

這個展示不錯,可以看到互相之間存在通訊關係的容器。顯示也算比較直觀,好看。

再看看images管理介面。

11介面好看,顯示不錯,帶了pull的功能和搜尋功能。大小,建立時間,映象ID這些一個都不少。

最後還有一個info的選項,這個我就不介紹了,它就是顯示了整臺伺服器的容器映象的統計,伺服器配置以及dockerui的相關版本資訊而已,可以理解成然並卵的部分。

總結一下dockerui使用感受。

1.總體來說介面比較好看,乾淨簡潔。

2.系統沒有登入驗證功能,其實也沒必要新增,因為它只能管理本地單機的docker容器。沒有批量管理功能。(這個很致命)

3.我們經常對容器的操作無非建立,互動執行命令,檢視日誌和檢視健康狀態。dockerui這方面功能不夠全面,缺少了建立,互動執行命令以及檢視日誌的功能。(這個相當致命)

4.這個平臺然並卵,你要管理容器還得需要從伺服器裡面操作。這個平臺只能算是一個擺設的花瓶,看看而已。

===========不是很華麗的分割線==================== 

shipyard  官網地址:http://www.shipyard-project.com

部署方法,一樣簡單:

curl -sSL https://shipyard-project.com/deploy | bash -s  即可,當然你也可以逐個元件啟動,不過要注意先後和link。下面有啟動說明。

部署完成後檢視一下到時跑了什麼容器,如下圖

11

解釋一下:docker ps看到了一大堆,挺嚇人的。現在說明一下,最新的shipyard集成了swarm管理,至於什麼是swarm,這裡就不多說了,可以去官網看下:https://docs.docker.com/swarm/  我們只需要知道swarm是一個管理docker叢集的工具就行,它分為swarm-manager和swarm-agent,可以理解成為主和僕的關係。

shipyard-swarm-agent   swarm agent 外掛,允許節點去排程容器。(這個是shipyard批量管理節點容器的關鍵點)

啟動命令:docker run  -ti -d –restart=always  –name shipyard-swarm-agent  swarm:latest  join –addr <ip-of-host>:2375 etcd://<ip-of-host>:4001

shipyard-swarm-manager   swarm manager 管理

啟動命令是:docker run  -ti  -d  –restart=always  –name shipyard-swarm-manager  swarm:latest \manage –host tcp://0.0.0.0:3375 etcd://<IP-OF-HOST>:4001

shipyard-proxy  預設情況下docker服務只監聽一個埠,我們重新配置docker可以使用TLS就必須要啟動多一個proxy用於報文轉發。TLS是什麼?TLS是安全層傳輸協議,用於在兩個通訊應用程式之間提供保密性和資料完整性的。

啟動命令是:docker run  -ti  -d  -p 2375:2375  –hostname=$HOSTNAME –restart=always –name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock  -e PORT=2375 ehazlett/docker-proxy:latest

shipyard-certs  這個東東是整個shipyard系統中允許支援TLS的元件,我是這樣理解的。

啟動命令:docker run -ti -d –name shipyard-certs alpine:latest

shipyard-controller   可以理解成shipyard的控制程式吧,啟動停止shipyard。

啟動命令是:docker run  -ti  -d  –restart=always  –name shipyard-controller  –link shipyard-rethinkdb:rethinkdb –link shipyard-swarm-manager:swarm  -p 8080:8080  shipyard/shipyard:latest  server  -d tcp://swarm:3375

shipyard-discovery    用於授權swarm manage選舉,用etcd儲存swarm容器對用的key和values。etcd是什麼這裡也不多介紹了,感興趣可以私下看。etcd是一個高可用的key-values儲存系統。

啟動命令是:docker run -ti -d  -p 4001:4001  -p 7001:7001  –restart=always  –name shipyard-discovery  microbox/etcd -name discovery

shipyard-rethinkdb    shipyard資料儲存

啟動命令是:docker run  -ti -d  –restart=always  –name shipyard-rethinkdb  rethinkdb

上面把shipyard相關的元件都清楚的說明了一輪,現在開始介紹管理介面,從docker ps看出shipyard映射出來的埠是8080,因此訪問它的介面是http://ip:8080 安裝完畢後有使用者名稱和密碼提示的,使用者名稱是admin密碼是shipyard(當然這個是可以在進入管理平臺後修改的)。

11

登入進去介面如上,介面也是十分好看的,導航欄分別是容器(預設首頁),映象,節點,倉庫,以及使用者管理和操作日誌。

容器管理介面一目瞭然,容器健康情況,容器ID,容器在哪個節點啟動,容器名稱,啟動的映象,執行時長,建立時間都十分明瞭。留意一下左上角的重新整理按鈕,右邊多了一個建立按鈕,說明了shipyard支援建立容器,以下是建立的介面。

11建立容器的介面功能選擇非常多,可以在這裡定義容器的主機名,容器需要掛載本地的目錄情況,埠對映,cpu和記憶體限制等等,這裡都可以選擇。可見shipyard將docker run這個命令可以帶的引數基本都封裝到了web上,這點非常好。

下面繼續看下容器介面右邊action的兩個選項,分別是一個放大鏡形狀的和扳手形狀的。

11

扳手形狀的功能是對容器的具體操作,啟動,停止,刪除,而且這裡也包括了我們比較常用的健康監控(CPU,記憶體,可以檢視5秒10秒30秒1分鐘的圖表),命令列console操作和檢視日誌的logs操作。這個十分人性化。

1111111

11

另外一個放大鏡的選項是針對容器的具體資訊頁面如下:資訊十分詳細,包括掛載,埠對映,執行命令和容器裡啟動的程序資訊一個不少。

11

下面看看管理映象的介面:

11

images介面可以直接刪除映象和直接pull映象。

管理節點的介面:

11

可以看出管理節點的介面標示了節點機器的主機名,IP地址,容器個數,已經資源使用情況等。

私有倉庫介面,可以在頁面新增自己的私有倉庫,為什麼要有私有倉庫,這個之前在其他文章有說明,因為網路,因為翻牆,因為流量,因為便於管理。

11

剩下的使用者管理介面和操作日誌記錄介面我就不多說了,一個是用於管理使用者的(只能新增,刪除不做許可權分化管理)另外一個是操作日誌記錄(可以刪除,裡面詳細說明了每一個針對容器和映象的操作,以及是呼叫了哪個docker api操作的都有說明,十分詳細)。

還補充一點,上面忘記說了,管理介面安裝部署說了,但是如何新增節點呢?如下命令:

curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://10.0.1.10:4001bash -s

現在總結一下shipyard的使用感受:

1.shipyard是一個很強的docker管理系統,介面乾淨好看,很多功能想操作隨手可得,大大節約了查詢功能按鈕的時間。

2.shipyard可以管理容器,映象,私有倉庫,這個針對docker的生態圈管理很全面。而且功能部分封裝docker api用的很細緻,如建立容器那裡可以看出來,覆蓋很全面了。而且操作容器最常用的那幾個功能都齊全,建立刪除容器,批量管理節點容器叢集,執行命令,檢視健康狀態監控,以及看日誌輸出。

3.shipyard結合了swarm支援管理docker叢集,不單單隻管理本地的docker容器,這個很好。而且用shipyard建立容器會自動建立到資源相對消耗少的節點下面,這個顯得很智慧。

4.一定要挑選shipyard的不足,就是利用shipyard建立容器耗時相對來說耗時一點。(這個具體原因我也不清楚,總感覺比我在伺服器裡docker run慢,可能是排程選擇空閒節點的時候需要耗時)

5.shipyard不能針對具體的節點建立容器,這個也算一個小小的不夠完美。假如可以針對節點自己控制容器這樣或許更加有利於我們部分對網路相連比較重要的專案。

6.shipyard少了針對容器之間網路管理的選項,假如可以整合pipwork管理容器網路那就更完美了。

經過了一週的使用,shipyard的優勢是壓倒性勝過dockerui的,而且好訊息是shipyard是基於python django架構開發的,二次開發應該不難。

不說了,我得趕緊去把dockerui給刪了。- -!!