鱼喃

听!布鲁布鲁,大鱼又在那叨叨了

Docker(Swarm) WEB管理面板调研与对比

不是所有人都喜欢命令行的

背景

一顿折腾、迁移之后,总算是把要用的和将来可能会用到的技术和环境迁移到了Docker上,如释重负。然而师兄指出:现在必须要通过命令行来管理集群,缺乏一个可视化的界面来显示集群运行状况和操作集群的简易界面,既不容易其他人管理,也不方便给大BOSS展示,最好是弄一个可视化的面板。
又是一顿折腾。。。

支持Docker swarm的轮子

因为我们的容器都是基于docker swarm建立的,所以首先考虑支持docker swarm的。

Dataman-Cloud/crane (634 Stars)

介绍

Dataman-Cloud/crane
这个轮子是第一个尝试的,也是师兄在网上看见的。这是一家名叫数人云的中国公司造的轮子,号称是“国内首个基于 Docker SwarmKit 的容器管理工具”。

部署

部署过程略复杂。
需要

  • 安装docker compose
  • 开启docker remote api
  • 开启ntp服务
  • 运行几个容器
    因为主要是对比分析,不会有大段的安装步骤。这里是一键安装前三个条件的脚本install_crane_prerequirements.sh,适用于ubuntu 16.04
1
2
3
git clone https://github.com/Dataman-Cloud/crane.git
cd ~/crane/release/v1.0.6
CRANE_IP=192.168.1.227 VERSION=v1.0.6 ./deploy.sh

脚本会启动4个docker容器,全部运行后,打开浏览器输入192.168.1.227:80 访问

界面展示

8ec6648276ede7ba701fca8a3425674e.gif

数人云面板界面展示

分析

根据使用情况来看,这个是一个比较完整的管理面板,界面清晰、设计较先进(默认支持stack,docker后来才正式推出)、允许自定义模版一键部署、web console。
但是存在一些_致命的_缺陷:

  • 前置条件较高,竟然需要docker compose,对原环境侵入性大
  • 命名问题,不支持含有 “-” 号的网络名等
  • 通过命令行创建的service面板上不会显示(这是最不能忍的)
  • 用户系统至今未完成,修改密码也没有

通过使用,大胆猜测一下数人云面板的运行机制:
这个项目是在swarm被集成到docker之前启动的,所以需要docker compose来启动容器;同时,默认都是以stack的形式管理service的,但是在它推出之前,docker stack还是一个实验特性,所以为了支持这一点,数人云采用了第三方存储来协调,这也就是为什么它额外启动了mysql等容器以及不显示命令行启动的service的原因;
随着swarm被集成,stack正式发布,数人云的很多工作可以说是无用了;另外,我猜测也是商业化遇阻,项目近期基本没怎么更新了,但是回复问题还是很快很热心的。
不过,就国内而言,数人云面板确实是最好的管理面板了,工程师对docker的掌握能力也是很强的,网上随处可见他们的文章。

portainer/portainer (2931 Stars)

portainer/portainer

介绍

这个一开始就发现了,不过当时似乎并不支持swarm,就没考虑。最近发现已经支持swarm了。

部署

这个部署很简单

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

界面展示

cf62224240b22bf69c681f53e632cd15.gif

Portainer界面展示

分析

之前一直用的是数人云面板,但是由于上面的缺陷,一直都想换。不就是弄个ui,后端再调docker remote api么,整这么复杂。都想自己造个轮子了,开工之前上github搜了一下,看到这个支持swarm了。试用了几分钟,发现这TM就是我想要的啊:

  • 所有控制都是通过docker remote api,就造了前端,命令行、界面可以同时操作
  • 功能全面,api支持的基本都有
  • 用户系统完善(带权限控制)
  • 支持remote api的验证,安全性有一定保障
  • 文档丰富、易懂
  • 社区活跃

不足点:

  • 现在尚不支持创建service的模板(代码设计导致的,需要重新设计)
  • 没有中文(对部分人而言)

staugur/SwarmOps (36 Stars)

staugur/SwarmOps

介绍

这个也是国人做的,项目很新,17年3月份才发布。

部署

从项目介绍来看功能还是比较全的,然而部署失败。。。

界面展示

e97827e11320a3e0adcd9824034ba314.png

Swarmops界面展示

分析

初期项目,可以期待一下。

mlabouardy/dockerswarm-ui (45 Stars)

mlabouardy/dockerswarm-ui

介绍

跟上面一个功能基本一样

部署

1
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock --name dockerswarm-ui mlabouardy/dockerswarm-ui

界面展示

c407b14b5faa409d5fcb4260bf3a51c4.png

dockerswarm-ui界面展示

分析

槽点:

  • 测试做的不够,有严重影响使用的bug
  • 最下方的containers用了特效(duang duang duang),不过真心不知道这特效有啥用~~~
  • 感觉作者跟我一样,前端不好。。

jfdamy/SwarmUI (5 Stars)

jfdamy/SwarmUI
没有试,看上去是玩具代码

tombee/docker-swarm-ui (2 Stars)

木有文档

mlabouardy/swarm-mode-ui (0 Star)

比上面一个好,虽然没有demo,但是至少人家说了支持啥

普通轮子

shipyard/shipyard (5858 Stars)

shipyard/shipyard

介绍

工大的老师推荐的,他们一直用的这个,给的评价很高。

部署

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

界面展示

8b3359654e4908276d778597188ac169.png

shipyard界面展示

分析

这个项目很火,可以管理集群。但是这个似乎比数人云还要早,连docker remote api都是自己造轮子实现的。
如果自己开启了remote api,端口冲突启动会失败(各种失败),在代码里取消2375端口的服务,成功部署,似乎也没啥影响。。
试用了一会就放弃了,跟数人云类似,自己造的轮子太多了。

kevana/ui-for-docker (4661 Stars)

kevana/ui-for-docker
备注已废弃,见portainer/portainer,不过很好奇,这个项目的star竟然这么高。

tobegit3hub/seagull (1527 Stars)

tobegit3hub/seagull
懒,所以就没尝试了。

francescou/docker-compose-ui (488 Stars)

francescou/docker-compose-ui
没尝试

felixgborrego/simple-docker-ui (333 Stars)

felixgborrego/simple-docker-ui
这个名字我很喜欢