一、shipyard基本介绍
shipyard是在Docker Swarm上实现对容器、镜像、docker集群、仓库、节点进行管理的web系统,整个项目通过go语言实现核心逻辑部分。采用golang调用Docker Remote API和使用 angular.js+semantic 实现UI部分,这两部分合起来构成了shipyard的web管理系统。
二、shipyard的生态
shipyard是由shipyard控制器以及周围生态系统构成。以下按照官网提供的【手动部署方式】的启动顺序进行介绍。
(1)Datastore:shipyard采用rethinkdb作为数据库来保存用户等信息;
(2)Discovery:为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认采用etcd;
(3)Proxy:默认情况下,Docker Engine只监听socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,从TCP转发请求到Docker监听的UNIX Socket;
(4)Swarm Agent:Swarm管理器;
(5)Controller:shipyard控制器,Remote API和web的实现。
三、shipyard的部署方式
方式1:官网提供了在线脚本安装方法,这里不再赘述。
https://shipyard-project.com/automated-deployment/
方式2:将源码下载到本地重新编译安装。
基于上面的介绍进行分析,整个项目的编译部署流程安排如下:
1)编译核心代码,即编译controller目录;
2)编译UI部分,即编译controller/static目录;
3)通过controller目录下的Dockerfile文件构建本地shipyard 镜像;
4)按照上面介绍的手动部署方式依次下载相应镜像并启动容器;
5)完成部署。
备注:1)和2)两步可以互换,无先后顺序。
四、实操
我准备先在windows平台调试好shi