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 确定容器是否起来了。
如上图所示,即可判定容器已经起来了。
在浏览器输入ip:9000即可访问了。
界面如上,界面比较整洁。首页的信息分别是运行中的容器(附带运行了的时间),容器创建记录曲线,和镜像创建记录曲线。
上图为容器管理的界面,上面列出了正在跑的容器情况,包括容器名,镜像,命令,以及创建时间。针对于具体的容器可以点击进去管理,下图我以名为lamp的容器为例说明:
容器管理基本如上图,展示的信息比较齐全,但是忽略了我们比较常用管理容器的方式之一,就是查看日志功能也就是cmd docker logs的展示,也少了连接到容器内部执行命令的可视化操作,也就是cmd docker exec 。当然在这个容器管理界面我没有发现任何和容器集群有关的信息,也就是说dockerui不能管理docker集群,只能管理单机的容器,这个痛点相当大。
继续容器网络管理界面
这个展示不错,可以看到互相之间存在通讯关系的容器。显示也算比较直观,好看。
再看看images管理界面。
界面好看,显示不错,带了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。下面有启动说明。
部署完成后查看一下到时跑了什么容器,如下图
解释一下: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(当然这个是可以在进入管理平台后修改的)。
登录进去界面如上,界面也是十分好看的,导航栏分别是容器(默认首页),镜像,节点,仓库,以及用户管理和操作日志。
容器管理界面一目了然,容器健康情况,容器ID,容器在哪个节点启动,容器名称,启动的镜像,运行时长,创建时间都十分明了。留意一下左上角的刷新按钮,右边多了一个创建按钮,说明了shipyard支持创建容器,以下是创建的界面。
创建容器的界面功能选择非常多,可以在这里定义容器的主机名,容器需要挂载本地的目录情况,端口映射,cpu和内存限制等等,这里都可以选择。可见shipyard将docker run这个命令可以带的参数基本都封装到了web上,这点非常好。
下面继续看下容器界面右边action的两个选项,分别是一个放大镜形状的和扳手形状的。
扳手形状的功能是对容器的具体操作,启动,停止,删除,而且这里也包括了我们比较常用的健康监控(CPU,内存,可以查看5秒10秒30秒1分钟的图表),命令行console操作和查看日志的logs操作。这个十分人性化。
另外一个放大镜的选项是针对容器的具体信息页面如下:信息十分详细,包括挂载,端口映射,执行命令和容器里启动的进程信息一个不少。