# 摘要:使用Docker Toolbox快速搭建3节点的shipyard集群。
# 首先创建3台Docker虚拟机;然后按照官网的步骤,运行Shipyard相关容器;
# 再将另外2台工作节点加入到Shipyard管理端,实现集中管理整个集群。
#
#实验环境:Docker Toolbox v17.05.0+Windows 7
#
#创建3台 Docker 虚拟机
Manager1="manager1"
NodeName1="node1"
NodeName2="node2"
docker-machine create \
--driver virtualbox \
--virtualbox-cpu-count "1" \
--virtualbox-disk-size "20000" \
--virtualbox-memory "2048" \
--engine-registry-mirror https://registry.docker-cn.com \
--engine-registry-mirror=http://hub-mirror.c.163.com \
$Manager1
docker-machine create \
--driver virtualbox \
--virtualbox-cpu-count "1" \
--virtualbox-disk-size "20000" \
--virtualbox-memory "2048" \
--engine-registry-mirror https://registry.docker-cn.com \
--engine-registry-mirror=http://hub-mirror.c.163.com \
$NodeName1
docker-machine create \
--driver virtualbox \
--virtualbox-cpu-count "1" \
--virtualbox-disk-size "20000" \
--virtualbox-memory "2048" \
--engine-registry-mirror https://registry.docker-cn.com \
--engine-registry-mirror=http://hub-mirror.c.163.com \
$NodeName2
#切换到主控节点 manager1 上
eval $(docker-machine env $Manager1)
#为保证正常创建,需要先下载相关镜像
docker pull swarm
docker pull shipyard/shipyard
docker pull rethinkdb
docker pull microbox/etcd
docker pull shipyard/docker-proxy
#1.1、运行数据库容器,使用rethinkdb镜像,(Datastore)
docker run \
-tid \
--restart=always \
--name shipyard-rethinkdb \
rethinkdb
#1.2、运行用于服务发现的KV存储,使用microbox/etcd镜像,(Discovery)
docker run \
-tid \
-p 4001:4001 \
-p 7001:7001 \
--restart=always \
--name shipyard-discovery \
microbox/etcd -name discovery
#1.3、运行 Shipyard代理,实现TLS加密传输,使用shipyard/docker-proxy镜像,(Proxy)
docker run \
-tid \
-p 2375:2375 \
--hostname=$Manager1 \
--restart=always \
--name shipyard-proxy \
-v /var/run/docker.sock:/var/run/docker.sock \
-e PORT=2375 \
shipyard/docker-proxy:latest
#1.4、运行 Swarm集群管理端,使用 swarm:latest镜像,(Swarm Manager)
docker run \
-tid \
--restart=always \
--name shipyard-swarm-manager \
swarm:latest \
manage --host tcp://0.0.0.0:3375 etcd://$(docker-machine ip $Manager1):4001
#1.5、运行 Swarm代理端,使用swarm:latest镜像,(Swarm Agent)
docker run \
-tid \
--restart=always \
--name shipyard-swarm-agent \
swarm:latest \
join --addr $(docker-machine ip $Manager1):2375 etcd://$(docker-machine ip $Manager1):4001
#1.6、运行shipyard 控制器,使用shipyard/shipyard:latest镜像,(Controller)
docker run \
-tid \
--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管理端 manager1创建完毕!#########################
############### Shipyard工作节点 node1的安装配置###########################
#切换到工作节点 node1 上
eval $(docker-machine env $NodeName1)
#为保证正常创建,需要先在node1上下载相关镜像
docker pull swarm
docker pull shipyard/docker-proxy
#2.3、运行 Shipyard代理,实现TLS加密传输,使用shipyard/docker-proxy镜像,(Proxy)
docker run \
-tid \
-p 2375:2375 \
--hostname=$NodeName1 \
--restart=always \
--name shipyard-proxy \
-v /var/run/docker.sock:/var/run/docker.sock \
-e PORT=2375 \
shipyard/docker-proxy:latest
#2.5、运行 Swarm代理端,使用swarm:latest镜像,(Swarm Agent)
docker run \
-tid \
--restart=always \
--name shipyard-swarm-agent \
swarm:latest \
join --addr $(docker-machine ip $NodeName1):2375 etcd://$(docker-machine ip $Manager1):4001
############### Shipyard工作节点 node1的安装完毕!##############################
############### Shipyard工作节点 node2的安装配置################################
#切换到工作节点 node2 上
eval $(docker-machine env $NodeName2)
#为保证正常创建,需要先在node2上下载相关镜像
docker pull swarm
docker pull shipyard/docker-proxy
#3.3、运行 Shipyard代理,实现TLS加密传输,使用shipyard/docker-proxy镜像,(Proxy)
docker run \
-tid \
-p 2375:2375 \
--hostname=$NodeName2 \
--restart=always \
--name shipyard-proxy \
-v /var/run/docker.sock:/var/run/docker.sock \
-e PORT=2375 \
shipyard/docker-proxy:latest
#3.5、运行 Swarm代理端,使用swarm:latest镜像,(Swarm Agent)
docker run \
-tid \
--restart=always \
--name shipyard-swarm-agent \
swarm:latest \
join --addr $(docker-machine ip $NodeName2):2375 etcd://$(docker-machine ip $Manager1):4001
############### Shipyard工作节点 node2的安装完毕!###############################
#3.7、访问方法:
echo http://$(docker-machine ip $Manager1):8080 , 用户名:admin,密码:shipyard
#
########################## 结束 ################################################
参考链接:
https://shipyard-project.com/docs/deploy/
http://www.tuicool.com/articles/FnmeuuN
http://www.cnblogs.com/kevingrace/p/6867820.html
http://www.jianshu.com/p/497615077c71
http://www.cnblogs.com/xuezhigu/p/6734756.html