Shipyard(github)是创建在docker集群管理工具Citadel之上的能够管理容器、主机等资源的web图形化工具。包括core和extension两个版本,core即shipyard主要是把多个 Docker host上的 containers 统一管理(支持跨越多个host),extension即shipyard-extensions添加了应用路由和负载均衡、集中化日志、部署等。 nginx
一个shipyard管理的docker集群能够包含一个或多个engine(引擎),一个engine就是监听tcp 端口的docker daemon。shipyard管理docker daemon、images、containers彻底基于Docker API,不须要作其余的修改。另外,shipyard能够对每一个engine作资源限制,包括CPU和内存;由于TCP监听相比Unix socket方式会有必定的安全隐患,因此shipyard还支持经过SSL证书与docker后台进程安全通讯。 git
RethinkDB是一个shipyard项目的一个docker镜像,用来存放帐号(account)、引擎(engine)、服务密钥(service key)、扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。通常会启动一个shipyard/rethinkdb容器shipyard-rethinkdb-data来使用它的/data做为数据卷供另外rethinkdb一个挂载,专门用于数据存储。 github
Shipyard 要管理和控制 Docker host 的话须要先修改 Docker host 上的默认配置使其监听tcp端口(能够继续保持Unix socket)。有如下2种方式 web
重启服务 $ sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d 验证 $ netstat -ant |grep 4243 tcp6 0 0 :::4243
|
|
shipyard(基于Python/Django)在v1版本时安装过程比较复杂,既能够经过在host上安装,也能够部署shipyard镜像(包括shipyard-agent、shipyard-deploy等组件)。v2版本简化了安装过程,启动两个镜像就完成: redis
|
获取一个/data的数据卷 $sudo docker run -it -d --name shipyard-rethinkdb-data \ --entrypoint /bin/bash shipyard/rethinkdb -l 使用数据卷/data启动RethinkDB docker run -it -P -d --name shipyard-rethinkdb \ --volumes-from shipyard-rethinkdb-data shipyard/rethinkdb |
启动shipyard控制器: docker
|
sudo docker run -it -p 8080:8080 -d --name shipyard \ --link shipyard-rethinkdb:rethinkdb shipyard/shipyard |
至此已经能够经过浏览器访问http://host:8080来访问shipyard UI界面了。 shell
第一次run后,关闭再次启动时直接使用: json
|
sudo docker stop shipyard shipyard-rethinkdb shipyard-rethinkdb-data sudo docker start shipyard-rethinkdb-data shipyard-rethinkdb shipyard |
登陆:
默认用户名/密码为 admin/shipyard ubuntu
主界面:
Dashboard展现在添加engine时指定的CPU以及内存的使用状况。 浏览器
容器:
shipyard管理的全部docker主机的全部容器,包括stop和running状态的。能够直接点击DEPLOY按钮来从镜像运行出其余容器,与docker run的选项几乎相同,能够限制CPU和内存的使用,详见shipyard的containers文档。
容器操做:
能够stop、start、restart容器,经过LOGS能够看到容器日志输出,SCALE可 以批量(规模化)部署该容器,这个操做与容器的Type属性息息相关。由于shipyard能够管理多个host的docker容器,因此启动一个容器的 type能够是:service——能够在具备相同label的engine上运行;unique——一个host上只容许某个镜像的一个实例运 行;host——在指定的host上运行容器,启动的时候经过--label host:<host-id>语法指定docker host。
engine管理:
一 个engine就是一个docker daemon,docker daemon下启动着多个containers,能够对engine限制一个总体的CPU和内存限制,shipyard经过TCP端口链接daemon。 须要注意的是docker client与server的版本问题:(由于shipyard目前还在快速的完善过程,不一样版本的docker应该是向下兼容的)
curl -X GET http://172.29.88.223:4243/v1.15/containers/json client and server don't have same version (client : 1.15, server: 1.13) |
|
目前图形化界面能作的操做其实不多,正在强大的是经过shipyard提供的命令行窗口(称做Shipyard CLI)进行管理,参考http://shipyard-project.com/docs/usage/cli/
启动命令行交互模式:
sudo docker run --rm -it shipyard/shipyard-cli
使用它甚至能够替代docker客户端。
sean@seanubt:~$ sudo docker run -it shipyard/shipyard-cli shipyard cli> shipyard help NAME: shipyard - manage a shipyard cluster USAGE: shipyard [global options] command [command options] [arguments...] VERSION: 2.0.8 COMMANDS: login login to a shipyard cluster change-password update your password accounts show accounts add-account add account delete-account delete account containers list containers inspect inspect container run run a container stop stop a container restart restart a container scale scale a container logs show container logs destroy destroy a container engines list engines add-engine add shipyard engine remove-engine removes an engine inspect-engine inspect an engine service-keys list service keys add-service-key adds a service key remove-service-key removes a service key extensions show extensions add-extension add extension remove-extension remove an extension webhook-keys list webhook keys add-webhook-key adds a webhook key remove-webhook-key removes a webhook key info show cluster info events show cluster events help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --help, -h show help --generate-bash-completion --version, -v print the version 登陆shipyard shipyard cli> shipyard login URL: http://172.29.88.205:8080 Username: admin Password: 查看containers shipyard cli> shipyard containers 启动一个容器 shipyard cli> shipyard run --name nginx:1.7.6 --container-name web_test \ --cpus 0.2 \ --memory 64 \ --type service \ --hostname nginx-test \ --domain example.com \ --link redis:db \ --port tcp/172.29.88.205:81:8081 \ --port tcp/::8000 \ --restart "on-failure:5" \ --env FOO=bar \ --label dev \ 查看容器日志(只能接容器ID,暂不能使用容器名) shipyard cli> shipyard logs ff2761d 关闭并移除容器 shipyard cli> shipyard destroy <container_id> 试用后以为shipyard的web只实现了最基本的功能,若是须要方便的从web管理docker集群的话,还须要作不少定制工做。 |