1. 程式人生 > >Docker的web端管理平臺對比(DockerUI 、Shipyard、Portainer、Daocloud)

Docker的web端管理平臺對比(DockerUI 、Shipyard、Portainer、Daocloud)

前言

最近,為了方便對命令列過敏的測試或開發人員,我決定部署一個視覺化的管理平臺來管理docker,在我重灌十幾次系統(當然,只是虛擬機器映象克隆),對比之後,終於選擇了一款心儀的管理平臺。

部署docker環境

安裝/升級你的Docker環境,建議使用過阿里雲的映象倉庫下載:mirrors.aliyun.com/help/docker-engine
或執行以下命令:

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

另外,建議使用阿里雲的映象加速,以方便後期pull 映象。申請個人唯一加速地址

https://cr.console.aliyun.com/
通過修改daemon配置檔案/etc/docker/daemon.json來使用加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://***.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

DockerUI

DockerUI基於Docker API,提供等同Docker命令列的大部分功能。

部署

[root@localhost ~]# docker pull uifd/ui-for-docker 
Using default tag: latest
latest: Pulling from uifd/ui-for-docker
841194d080c8: Pull complete 
Digest: sha256:fe371ff5a69549269b24073a5ab1244dd4c0b834cbadf244870572150b1cb749
Status: Downloaded newer image for uifd/ui-for-docker:latest
[root@localhost
~]# docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker ac85040b8a9f2f203c22ba2e4d90a830e31d89a1d6ce77579a7b95de5da51e01

拉取映象

docker pull uifd/ui-for-docker 

啟動容器

docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker 

介面

開啟ip:9000,首頁:

容器管理:

容器網路,這裡可以顯示容器與容器之間的關係。

容器管理:

總結

優點:

  1. 支援容器管理
  2. 支援映象管理
  3. 基於docker api,自身也是一個容器。
  4. 穩定性高
  5. 可動態顯示顯示容器之間關係圖
  6. 容器管理,增加埠對映,增加系統變數、對映目錄等

缺點:

  1. 沒有登入驗證,因為沒有登入體系,目前解決辦法是,只開放本地訪問,或者通過TLS來對許可權進行控制。
  2. 無法分配某容器給某使用者。
  3. 不支援多主機。
  4. 不支援叢集swarm等
  5. 功能少
  6. 不支援控制檯命令

結論

因為沒有登入體系,所以很難在公司裡流通。因為這樣,每個人都可以去控制,即使通過TLS來控制權限,但無法將容器管理許可權分配給某個使用者,所以最終放棄該平臺。

Shipyard

Shipyard是在Docker Swarm的基礎上,管理Docker資源,包括容器,映象,登錄檔等。

部署

這裡以官網自動化部署為例,部署程式碼如下

curl -sSL https://shipyard-project.com/deploy | bash -s

注意:這將在埠2375上暴露Docker Engine。如果此節點可以在安全網路之外訪問,建議使用TLS。

支援叢集,所以可以新增節點:

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

其中上段程式碼中ip地址,為第一臺伺服器的ip地址。
結果它硬生生的啟動了7個容器,其中2個swarm的容器

CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                            NAMES
fb81fb51d619        shipyard/shipyard:latest       "/bin/controller -..."   2 minutes ago       Up 37 seconds       0.0.0.0:8080->8080/tcp                           shipyard-controller
e9e462e168ea        swarm:latest                   "/swarm j --addr 1..."   2 minutes ago       Up 2 minutes        2375/tcp                                         shipyard-swarm-agent
8913ed62608d        swarm:latest                   "/swarm m --replic..."   2 minutes ago       Up 2 minutes        2375/tcp                                         shipyard-swarm-manager
ee1e25e0235d        shipyard/docker-proxy:latest   "/usr/local/bin/run"     2 minutes ago       Up 2 minutes        0.0.0.0:2375->2375/tcp                           shipyard-proxy
f10edb7eda1c        alpine                         "sh"                     3 minutes ago       Up 3 minutes                                                         shipyard-certs
6411b4226a6f        microbox/etcd:latest           "/bin/etcd -addr 1..."   3 minutes ago       Up 3 minutes        0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp   shipyard-discovery
eaf008cbebae        rethinkdb                      "rethinkdb --bind all"   3 minutes ago       Up 3 minutes        8080/tcp, 28015/tcp, 29015/tcp                   shipyard-rethinkdb

增加節點的話,節點機器會自動執行5個容器,不得不說功能強大,還是有代價的。

介面

容器列表

容器詳情

容器監控

容器控制檯

總結

優點:

  1. 支援映象管理、容器管理。
  2. 支援控制檯命令
  3. 容器資源消耗監控
  4. 支援叢集swarm,可以隨意增加節點
  5. 支援控制使用者管理許可權,可以設定某個容器對某個使用者只讀、管理許可權。
  6. 有漢化版

缺點

  1. 啟動容器較多,佔用每個節點的一部分資源
  2. 相容性性不高,可能是我自身原因,經常打不開首頁。

結論

總體上講Shipyard功能強大,實用型高,支援叢集,支援容器許可權分配,是公司不二之選,但是考慮到暫時經常打不開首頁,且佔用每臺伺服器較多資源,暫時列為備選方案。

Portainer

Portainer是一款輕量級docker容器管理平臺,佔用資源少,支援叢集,支援許可權分配。

部署

docker run -d -p 9000:9000 portainer/portainer

部署Portainer來管理Swarm群集,也可以在Docker群集中直接部署Portainer作為服務。

docker service create \
--name portainer \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer \
-H unix:///var/run/docker.sock

介面

首頁面

映象管理

使用者管理

容器監控

節點管理

控制檯

總結

優點

  1. 支援容器管理、映象管理
  2. 輕量級,消耗資源少
  3. 基於docker api,安全性高,可指定docker api埠,支援TLS證書認證。
  4. 支援許可權分配
  5. 支援叢集

缺點

  1. 功能不夠強大。
  2. 容器建立後,無法通過後臺增加埠。

結論

雖然Portainer存在一些問題,但已經可以滿足基本需求,且支援許可權分配,最終我選擇了它。

Daocloud

Daocloud 是一個老牌的第三方管理平臺,可以自由增加機器節點,功能極其強大。

部署

curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s ****金鑰 

介面

容器列表

容器日誌

容器管理

可部署多個容器,擴容

映象平臺

總結

優點:

  1. 支援映象管理、容器管理。
  2. 支援控制檯命令
  3. 容器資源消耗監控
  4. 支援叢集可以隨意增加節點
  5. 中文平臺
  6. 映象下載
  7. 容器擴容、管理

缺點

  1. 管理平臺無法部署到本地伺服器
  2. 部分高階功能收費

結論

因為閉源,且收費,暫且團隊放棄它,,但作為自己測試使用,強烈推薦使用它,因為我們點點滑鼠即可輕鬆部署一個強大的管理docker平臺。

最終總結

經過對docker管理平臺的分析,相信大家一定有了自己的認識,有條件可以自己嘗試下部署,如果有新的心得體會或者更好的平臺記得告訴我哦。