Shipyard(github)是建立在docker集群管理工具Citadel之上的可以管理容器、主机等资源的web图形化工具。包括core和extension两个版本,core即shipyard主要是把多个 Docker host上的 containers 统一管理(支持跨越多个host),extension即shipyard-extensions添加了应用路由和负载均衡、集中化日志、部署等。
一个shipyard管理的docker集群可以包含一个或多个engine(引擎),一个engine就是监听tcp 端口的docker daemon。shipyard管理docker daemon、images、containers完全基于Docker API,不需要做其他的修改。另外,shipyard可以对每个engine做资源限制,包括CPU和内存;因为TCP监听相比Unix socket方式会有一定的安全隐患,所以shipyard还支持通过SSL证书与docker后台进程安全通信。
RethinkDB是一个shipyard项目的一个docker镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。一般会启动一个shipyard/rethinkdb容器shipyard-rethinkdb-data来使用它的/data作为数据卷供另外rethinkdb一个挂载,专门用于数据存储。
Shipyard 要管理和控制 Docker host 的话需要先修改 Docker host 上的默认配置使其监听tcp端口(可以继续保持Unix socket)。有以下2种方式
1
2
3
4
5
|
重启服务
$
sudo
docker -H tcp:
//0
.0.0.0:4243 -H unix:
///var/run/docker
.sock -d
验证
$
netstat
-ant |
grep
4243
tcp6 0 0 :::4243
|
shipyard(基于Python/Django)在v1版本时安装过程比较复杂,既可以通过在host上安装,也可以部署shipyard镜像(包括shipyard-agent、shipyard-deploy等组件)。v2版本简化了安装过程,启动两个镜像就完成:
|
启动shipyard控制器:
|
至此已经可以通过浏览器访问http://host:8080来访问shipyard UI界面了。
第一次run后,关闭再次启动时直接使用:
|
主界面:
Dashboard展示在添加engine时指定的CPU以及内存的使用情况。
容器:
shipyard管理的所有docker主机的所有容器,包括stop和running状态的。可以直接点击DEPLOY按钮来从镜像运行出其他容器,与docker run的选项几乎相同,可以限制CPU和内存的使用,详见shipyard的containers文档。
容器操作:
可以stop、start、restart容器,通过LOGS可以看到容器日志输出,SCALE可 以批量(规模化)部署该容器,这个操作与容器的Type属性息息相关。因为shipyard可以管理多个host的docker容器,所以启动一个容器的 type可以是:service——可以在具有相同label的engine上运行;unique——一个host上只允许某个镜像的一个实例运 行;host——在指定的host上运行容器,启动的时候通过--label host:
engine管理:
一 个engine就是一个docker daemon,docker daemon下启动着多个containers,可以对engine限制一个整体的CPU和内存限制,shipyard通过TCP端口连接daemon。 需要注意的是docker client与server的版本问题:(因为shipyard目前还在快速的完善过程,不同版本的docker应该是向下兼容的)
|
目前图形化界面能做的操作其实很少,正在强大的是通过shipyard提供的命令行窗口(称作Shipyard CLI)进行管理,参考http://shipyard-project.com/docs/usage/cli/
启动命令行交互模式:
sudo docker run --rm -it shipyard/shipyard-cli
使用它甚至可以替代docker客户端。
试用后觉得shipyard的web只实现了最基本的功能,如果需要方便的从web管理docker集群的话,还需要做很多定制工作。 |
转自:http://seanlook.com/2014/12/29/docker-shipyard-centralized-management-webui/