今天在网上流量 docker 文章时偶然发现了一个 Docker 的 web 管理工具 shipyard,今天想起来介绍下,然而却发现官网无法打开,去作者的 GitHub 一看缺发现这个项目已经放弃维护了,也是相当可惜啊。
PS.shipyard 是船坞或者船厂的意思,结合 Docker 一直以来是条类似货轮的鲸鱼,其实这个名字挺合适的。
作者由于没有时间与精力继续维护下去,在去年八月份就开始询问是否有人感兴趣接手这个项目,可惜过了几个月依旧没有人出现,只能无奈的决定停止这个项目,官网也被关掉了。开源届每隔一阵子就会出现一个这样的项目(当然我指的是比较大的项目,小的估计每几天都有凉凉的),也是希望能有更多有能力的人能够加入为开源项目贡献代码的行列。
之前介绍了DOcker 的 web 管理工具 DockerUI,下面介绍下 Docker 的另一个 web 界面管理工具 Shipyard 的使用。Shipyard(github)是建立在 docker 集群管理工具 Citadel 之上的可以管理容器、主机等资源的 web 图形化工具, 包括 core 和 extension 两个版本,core 即 shipyard 主要是把多个 Docker host 上的 containers 统一管理(支持跨越多个 host),extension 即 shipyard-extensions 添加了应用路由和负载均衡、集中化日志、部署等;Shipyard 是在 Docker Swarm 实现对容器、镜像、docker 集群、仓库、节点进行管理的 web 系统。
———————DockerUI———————
功能:通过 Web 浏览器的命令行来管理的任务。
DockerUI 的优点
1)可以对运行着的容器进行批量操作
2)在容器网络中 - 会显示容器与容器间的网络关系
3)在 Volumes 中显示了所有挂载目录
DockerUI 一个致命的缺点:不支持多主机
试想一下,如果有 N 台 docker 主机时 - 我就需要一台台的用 dockerui 进行管理,想想都觉得麻烦。就单台主机而言,dockerui 是一款不错的管理工具。
———————Shipyard———————
功能:简化对横跨多个主机的 Docker 容器集群进行管理
通过 Web 用户界面,你可以大致浏览相关信息,比如你的容器在使用多少处理器和内存资源、在运行哪些容器,还可以检查所有集群上的事件日志。
其特性主要包括:
1)支持节点动态集群,可扩展节点的规模(swarm、etcd 方案)
2)支持镜像管理、容器管理、节点管理等功能
3)可视化的容器管理和监控管理
4)在线容 console 终端
了解 Shipyard 几个概念
1)engine
一个 shipyard 管理的 docker 集群可以包含一个或多个 engine(引擎),一个 engine 就是监听 tcp 端口的 docker daemon。
shipyard 管理 docker daemon、images、containers 完全基于 Docker API,不需要做其他的修改。
另外,shipyard 可以对每个 engine 做资源限制,包括 CPU 和内存;因为 TCP 监听相比 Unix socket 方式会有一定的安全隐患,
所以 shipyard 还支持通过 SSL 证书与 docker 后台进程安全通信。
2)rethinkdb
RethinkDB 是一个 shipyard 项目的一个 docker 镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、
扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。
Shipyard 生态
shipyard 是由 shipyard 控制器以及周围生态系统构成,以下按照 deploy 启动顺序进行介绍(下面几个就是 shipyard 使用脚本安装后,启动的几个容器名)
1)RethinkDB
deploy 首先启动的就是 RethinkDB 容器,shipyard 采用 RethinkDB 作为数据库来保存用户等信息
2)Discovery
为了使用 Swarm,我们需要一个外部的密钥值存储群容器,shipyard 默认是采用了 etcd。
3)shipyard_certs
证书管理容器,实现证书验证功能
4)Proxy
默认情况下,Docker 引擎只监听 Socket,我们可以重新配置引擎使用 TLS 或者使用一个代理容器,转发请求从 TCP 到 Docker 监听的 UNIX Socket。
5)Swarm Manager
Swarm 管理器
6)Swarm Agent
Swarm 代理,运行在每个节点上。
7)Controller
shipyard 控制器,Remote API 的实现和 web 的实现。
Shipyard 部署过程(下面是 centos7 下的安装记录)
好了,不说其他了,虽然官网挂了,项目也停止了,但是还是能用的,来体验下吧
服务器 ip:182.48.115.233
主机名:node-1
centos7.2
1)安装 docker 并配置加速
[root@node-1 ~]# yum install docker
[root@node-1 ~]# systemctl start docker
修改 docker 配置文件,添加下面一行,加速设置
[root@node-1 ~]# vim /etc/sysconfig/docker
......
ADD_REGISTRY='--add-registry xxx.mirror.aliyuncs.com'
然后重启 docker
[root@node-1 ~]# systemctl restart docker
2)下载镜像(这些镜像其实可以不用提前下载,执行下面安装 shipyard 的命令后就会自动下载这些镜像)
[root@node-1 ~]# docker pull alpine
[root@node-1 ~]# docker pull library/rethinkdb
[root@node-1 ~]# docker pull microbox/etcd
[root@node-1 ~]# docker pull shipyard/docker-proxy
[root@node-1 ~]# docker pull swarm
[root@node-1 ~]# docker pull shipyard/shipyard
[root@node-1 ~]# docker images
REPOSITORY TAG IMAGE IDCREATED SIZE
docker.io/alpinelatest 02674b9cb1796 days ago 3.984 MB
xxx.mirror.aliyuncs.com/library/rethinkdb latest b66f932ecd3c6 days ago 182.6 MB
docker.io/nginx latest 3448f27c273f7 days ago 109.4 MB
docker.io/swarm latest 36b1e23becab3 months ago15.85 MB
xxx.mirror.aliyuncs.com/shipyard/shipyard latest 36fb3dc0907d7 months ago58.82 MB
xxx.mirror.aliyuncs.com/shipyard/docker-proxy latest cfee14e5d6f216 months ago 9.464 MB
xxx.mirror.aliyuncs.com/microbox/etcd latest 6aef84b9ec5a21 months ago 17.86 MB
3)安装 shipyard
shipyard 的部署非常简单,因为官网已经停止维护了,只好通过下面的方式安装:
# 安装主节点(管理端)
curl -s https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | bash -s
#添加节点
curl -sSL https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | ACTION=node DISCOVERY=etcd:// 主节点 IP:4001 bash -s
注意:由于 deploy 在执行时需要访问 /var/run/docker.sock,所以需要 root 权限,或者为该文件添加权限。
[root@localhost ~]# curl -s https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | bash -s
Deploying Shipyard
-> Starting Database
-> Starting Discovery
-> Starting Cert Volume
-> Starting Proxy
-> Starting Swarm Manager
-> Starting Swarm Agent
-> Starting Controller
Waiting for Shipyard on 182.48.115.233:8080
Shipyard available at http://182.48.115.233:8080
Username: admin Password: shipyard
至此,shipyard 就已经安装完成了。使http://182.48.115.233:8080 就可以访问了(iptables 防火墙要是开启了,要记得打开 8080 端口访问),默认用户名为 admin 密码为 shipyard。
登录进去后,可以在”ACCOUNTS”选项里管理用户,可以添加用户,并对用户进行角色授权。
其他需要注意的几点
注意一下:
1)最好关闭防火墙
2)添加 Node 节点可能失败,可以进行多次尝试
添加 node 节点的操作
curl -sSL https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | ACTION=node DISCOVERY=etcd:// 主节点 IP:4001 bash -s
节点添加之后,访问 shipyard 页面,发现节点已经添加上了,如下:
可以在 shipyard 页面里做所添加的节点机里的 docker 容器进行关闭、删除、重启、重命名、提交新镜像、状态和日志查看能操作,如下:
可以在 shipyard 页面里添加镜像和容器,还可以添加私有仓库 Registry。
另外,在 shipyard 访问页面里,还提供了容器的 console 控制台,如下:
***当你发现自己的才华撑不起野心时,就请安静下来学习吧***