Docker集中化web界面管理平台shipyard

2017/01/16 微服务与容器

shipyard Dashboard

官方文档:https://shipyard-project.com/docs/deploy/manual/

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

一、几个概念

engine

一个shipyard管理的docker集群可以包含一个或多个engine(引擎),一个engine就是监听tcp端口的docker daemon。shipyard管理docker daemon、images、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一个挂载,专门用于数据存储。

二、搭建过程

修改tcp监听

Shipyard 要管理和控制 Docker host 的话需要先修改 Docker host 上的默认配置使其监听tcp端口(可以继续保持Unix socket)。有以下2种方式

1、docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -d 启动docker daemon。如果为了避免每次启动都写这么长的命令,可以直接在/etc/init/docker.conf中修改。

2、修改/etc/default/docker的DOCKER_OPTS,在里面加入以下: -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

3、重启

systemctl restart docker

4、Datastore

Shipyard使用RethinkDB的数据存储

$docker run \
-ti \
-d \
--restart=always \
--name shipyard-rethinkdb \
rethinkdb

5、Discovery 使用etcd做 key/value为后端做支持

docker run \
-ti \
-d \
-p 4001:4001 \
-p 7001:7001 \
--restart=always \
--name shipyard-discovery \
microbox/etcd -name discovery

6、Proxy

因为前边已经手动在配置文件添加的-H tcp://0.0.0.0:235 -H unix://var/run/docker.sock,所以此处我并没有执行以下命令

$ 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 \
shipyard/docker-proxy:latest

7、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

8、Swarm Agent

$ docker run \
-ti \
-d \
--restart=always \
--name shipyard-swarm-agent \
swarm:latest \
join --addr <ip-of-host>:2375 etcd://<ip-of-host>:4001

9、Controller

运行Shipyard Controller

$ 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

10、通过浏览器访问http://host:8080来访问shipyard UI界面

第一次run后,关闭再次启动时直接使用:

sudo docker stop shipyard shipyard-rethinkdb shipyard-rethinkdb-data
sudo docker start shipyard-rethinkdb-data shipyard-rethinkdb shipyard

访问http://ip:8080 默认用户名/密码为 admin/shipyard

容器管理

测试跑tomcat:

1、下载镜像

2、部署

3、运行

4、访问tomcat

Search

    Table of Contents