不是所有人都喜欢命令行的
背景
一顿折腾、迁移之后,总算是把要用的和将来可能会用到的技术和环境迁移到了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 | git clone https://github.com/Dataman-Cloud/crane.git |
脚本会启动4个docker容器,全部运行后,打开浏览器输入192.168.1.227:80 访问
界面展示
数人云面板界面展示
分析
根据使用情况来看,这个是一个比较完整的管理面板,界面清晰、设计较先进(默认支持stack,docker后来才正式推出)、允许自定义模版一键部署、web console。
但是存在一些_致命的_缺陷:
- 前置条件较高,竟然需要docker compose,对原环境侵入性大
- 命名问题,不支持含有 “-” 号的网络名等
- 通过命令行创建的service面板上不会显示(这是最不能忍的)
- 用户系统至今未完成,修改密码也没有
通过使用,大胆猜测一下数人云面板的运行机制:
这个项目是在swarm被集成到docker之前启动的,所以需要docker compose来启动容器;同时,默认都是以stack的形式管理service的,但是在它推出之前,docker stack还是一个实验特性,所以为了支持这一点,数人云采用了第三方存储来协调,这也就是为什么它额外启动了mysql等容器以及不显示命令行启动的service的原因;
随着swarm被集成,stack正式发布,数人云的很多工作可以说是无用了;另外,我猜测也是商业化遇阻,项目近期基本没怎么更新了,但是回复问题还是很快很热心的。
不过,就国内而言,数人云面板确实是最好的管理面板了,工程师对docker的掌握能力也是很强的,网上随处可见他们的文章。
portainer/portainer (2931 Stars)
介绍
这个一开始就发现了,不过当时似乎并不支持swarm,就没考虑。最近发现已经支持swarm了。
部署
这个部署很简单
1 | docker run -d -p 9000:9000 portainer/portainer |
界面展示
Portainer界面展示
分析
之前一直用的是数人云面板,但是由于上面的缺陷,一直都想换。不就是弄个ui,后端再调docker remote api么,整这么复杂。都想自己造个轮子了,开工之前上github搜了一下,看到这个支持swarm了。试用了几分钟,发现这TM就是我想要的啊:
- 所有控制都是通过docker remote api,就造了前端,命令行、界面可以同时操作
- 功能全面,api支持的基本都有
- 用户系统完善(带权限控制)
- 支持remote api的验证,安全性有一定保障
- 文档丰富、易懂
- 社区活跃
不足点:
- 现在尚不支持创建service的模板(代码设计导致的,需要重新设计)
- 没有中文(对部分人而言)
staugur/SwarmOps (36 Stars)
介绍
这个也是国人做的,项目很新,17年3月份才发布。
部署
从项目介绍来看功能还是比较全的,然而部署失败。。。
界面展示
Swarmops界面展示
分析
初期项目,可以期待一下。
mlabouardy/dockerswarm-ui (45 Stars)
介绍
跟上面一个功能基本一样
部署
1 | docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock --name dockerswarm-ui mlabouardy/dockerswarm-ui |
界面展示
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)
介绍
工大的老师推荐的,他们一直用的这个,给的评价很高。
部署
1 | curl -s https://shipyard-project.com/deploy | bash -s -- -h |
界面展示
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
这个名字我很喜欢