设为首页 收藏本站
查看: 2117|回复: 0

[经验分享] Docker集中化web界面管理平台shipyard

[复制链接]

尚未签到

发表于 2015-10-13 09:51:45 | 显示全部楼层 |阅读模式

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



1. 几个概念



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一个挂载,专门用于数据存储。



2. 搭建过程



修改tcp监听



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



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

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

重启服务
$ sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d
验证
$ netstat -ant  |grep 4243
tcp6       0      0 :::4243                 :::*                    LISTEN


启动rethinkdb



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


获取一个/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镜像



启动shipyard控制器:


sudo docker run -it -p 8080:8080 -d --name shipyard \
--link shipyard-rethinkdb:rethinkdb shipyard/shipyard


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


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


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


图示



登录:

DSC0000.png

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


主界面:

DSC0001.png

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


容器:

DSC0002.png

shipyard管理的所有docker主机的所有容器,包括stop和running状态的。可以直接点击DEPLOY按钮来从镜像运行出其他容器,与 docker
run 的选项几乎相同,可以限制CPU和内存的使用,详见 shipyard的containers文档 。


容器操作:

DSC0003.png

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


engine管理:

DSC0004.png

一个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-cli



目前图形化界面能做的操作其实很少,正在强大的是通过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-accountadd account
  delete-accountdelete account
  containers list containers
  inspectinspect container
  run run a container
  stopstop a container
  restartrestart a container
  scale  scale a container
  logsshow container logs
  destroydestroy a container
  engineslist engines
  add-engine add shipyard engine
  remove-engine removes an engine
  inspect-engineinspect an engine
  service-keys  list service keys
  add-service-key  adds a service key
  remove-service-keyremoves 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-keyremoves a webhook key
  infoshow cluster info
  events show cluster events
  help, hShows 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 &quot;on-failure:5&quot; \
   --env FOO=bar \
   --label dev \
查看容器日志(只能接容器ID,暂不能使用容器名)
shipyard cli> shipyard logs ff2761d
关闭并移除容器
shipyard cli> shipyard destroy <container_id>



不一一列举。。。


原文链接地址: http://seanlook.com/2014/12/29/docker-shipyard-centralized-management-webui/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-126155-1-1.html 上篇帖子: 5分钟弄懂docker 下篇帖子: 利用iptables给Docker绑定一个外网IP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表