天天看点

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

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

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

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

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

修改<code>/etc/default/docker</code>的<code>docker_opts</code>

<code>docker_opts="-h tcp://127.0.0.1:4243 -h unix:///var/run/docker.sock"</code>。这种方式在我docker version 1.4.1 in ubuntu 14.04上并没有生效。

shipyard(基于python/django)在v1版本时安装过程比较复杂,既可以通过在host上安装,也可以部署shipyard镜像(包括<code>shipyard-agent</code>、<code>shipyard-deploy</code>等组件)。v2版本简化了安装过程,启动两个镜像就完成:

启动shipyard控制器:

至此已经可以通过浏览器访问<code>http://host:8080</code>来访问shipyard ui界面了。

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

登录:

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

默认用户名/密码为 admin/shipyard

主界面:

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

dashboard展示在添加engine时指定的cpu以及内存的使用情况。

容器:

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

容器操作:

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

可以<code>stop</code>、<code>start</code>、<code>restart</code>容器,通过<code>logs</code>可以看到容器日志输出,<code>scale</code>可以批量(规模化)部署该容器,这个操作与容器的type属性息息相关。因为shipyard可以管理多个host的docker容器,所以启动一个容器的type可以是:service——可以在具有相同label的engine上运行;unique——一个host上只允许某个镜像的一个实例运行;host——在指定的host上运行容器,启动的时候通过<code>--label host:&lt;host-id&gt;</code>语法指定docker host。

engine管理:

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

一个engine就是一个docker daemon,docker daemon下启动着多个containers,可以对engine限制一个整体的cpu和内存限制,shipyard通过tcp端口连接daemon。需要注意的是docker client与server的版本问题:(因为shipyard目前还在快速的完善过程,不同版本的docker应该是向下兼容的)

启动命令行交互模式:

使用它甚至可以替代docker客户端。

不一一列举。。。