一:简介

    Shipyard(github)是建立在docker集群管理工具Citadel之上的可以管理容器、主机等资源的web图形化工具。包括core和extension两个版本,core即shipyard主要是把多个 Docker host上的 containers 统一管理(支持跨越多个host),extension即shipyard-extensions添加了应用路由和负载均衡、集中化日志、部署等。 


1:特点:

    1、支持多节点管理

    2、完善的节点、镜像、容器管理

    3、go语言开发,完美与docker结合


2:几个概念 

  engine 

  一个shipyard管理的docker集群可以包含一个或多个engine(引擎),一个engine就是监听tcp 端口的docker daemon。shipyard管理docker daemon、p_w_picpaths、containers完全基于Docker API,不需要做其他的修改。另外,shipyard可以对每个engine做资源限制,包括CPU和内存;因为TCP监听相比Unix socket方式会有一定的安全隐患,所以shipyard还支持通过SSL证书与docker后台进程安全通信。


  rethinkdb 

  RethinkDB是一个shipyard项目的一个docker镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。一般会启动一个shipyard/rethinkdb容器shipyard-rethinkdb-data来使用它的/data作为数据卷供另外rethinkdb一个挂载,专门用于数据存储。 



#####################中文版部署部署要求####################

1:zookeeper集群;

2:Docker version 1.10.3 以上版本;

3:服务器网络可以访问国外镜像下载站点;

注意:本次集群部署的是汉化后的web页面;


########################################################


以上条件满足情况下,只需要部署如下服务:


二:安装部署:

deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息


1:zk集群介绍;

本集群使用现有zookeeper集群:

node01.ptmind.com:2181

node02.ptmind.com:2181

node03.ptmind.com:2181


#安装数据库

RethinkDB 设计用来存储 JSON 文档的分布式数据库,可通过简单操作实现多机分布式存储。支持表的联合和分组查询。


docker run \

    -ti \

    -d \

    --restart=always \

    --name shipyard-rethinkdb \

    rethinkdb




#Swarm管理器

docker run \

    -ti \

    -d \

    --restart=always \

    --name shipyard-swarm-manager \

    swarm:latest \

    manage --host tcp://0.0.0.0:3375 zk://node01.ptmind.com:2181,node02.ptmind.com:2181,node03.ptmind.com:2181



#运行web管理界面

docker run \

    -ti \

    -d \

    --restart=always \

    --name shipyard-controller \

    --link shipyard-rethinkdb:rethinkdb \

    --link shipyard-swarm-manager:swarm \

    -p 38080:8080 \

    dockerclub/shipyard:latest \

    server \

    -d tcp://swarm:3375


#本次部署使用net网络模式,container 网络不能实现跨主机通讯的,以上服务部署在一台主机


#验证:

打开浏览器访问:

shipyard-swarm-manager服务器IP地址:38080


三:服务器加入集群


#slave 节点只需要部署agent


#swarm节点加入,并列出容器

#使用zookeeper

docker run \

    -ti \

    -d \

    --restart=always \

    --name shipyard-swarm-agent \

    swarm:latest \

    join --addr 172.16.7.12:2375 zk://node01.ptmind.com:2181,node02.ptmind.com:2181,node03.ptmind.com:2181


以上服务部署完成后,在manager几点管理页面即可看到,新的节点加入集群;



相关资料:

https://hub.docker.com/r/dockerclub/shipyard/

https://segmentfault.com/a/1190000003995350%E6%96%87%E7%AB%A0

https://segmentfault.com/a/1190000003995350%E6%96%87%E7%AB%A0