文档章节

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

加油2018
 加油2018
发布于 2015/01/07 10:05
字数 1417
阅读 3908
收藏 139

Shipyardgithub)是建立在docker集群管理工具Citadel之上的可以管理容器、主机等资源的web图形化工具。包括coreextension两个版本,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种方式

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


启动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

图示

登录:
docker-shipyard-login
默认用户名/密码为 admin/shipyard

主界面:
docker-shipyard
Dashboard展示在添加engine时指定的CPU以及内存的使用情况。

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

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

engine管理:
docker-shipyard-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)

3. 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-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集群的话,还需要做很多定制工作。



本文转载自:http://seanlook.com/2014/12/29/docker-shipyard-centralized-management-webui/

共有 人打赏支持
加油2018
粉丝 151
博文 276
码字总数 243077
作品 0
海淀
架构师
加载中

评论(5)

博客园
ss
kofj
kofj
真心不好用
maverickpuss
maverickpuss
ship 丫的
haitaosoft
haitaosoft
只要vmware改进一下,能 共享 系统文件、内存。就 更好用 了
当朝宰相
当朝宰相
好东西 记录下 学习下
Docker集中化web界面管理平台-Shipyard部署记录

之前介绍了DOcker的web管理工具DockerUI,下面介绍下Docker的另一个web界面管理工具Shipyard的使用。Shipyard(github)是建立在docker集群管理工具Citadel之上的可以管理容器、主机等资源的...

吞吞吐吐的
2017/10/13
0
0
安装部署shipyard

一、shipyard介绍 shipyard是管理docker daemon和容器的UI界面,可以以界面的方式管理docker。 主页:http://shipyard-project.com/ 二、安装shipyard 1. shipyard是基于RethinkDB作为后端存...

yuanhuan_2005
2015/05/25
0
0
Docker 的一个 Web 管理界面 Shipyard

Docker 的命令行就已经很好用了,如果非要加上基于 Web 的管理界面的话也有一些选择,如 DockerUI (Angular.js), Dockland (Ruby), Shipyard (Python/Django) 等,不过目前来看 Shipyard 项目...

鉴客
2013/12/15
8.8K
2
Docker的WEB管理界面shipyard

Docker 的命令行就已经很好用了,如果非要加上基于 Web 的管理界面的话也有一些选择,如 DockerUI (Angular.js), Dockland (Ruby), Shipyard (Python/Django) 等,不过目前来看 Shipyard 项目...

呆头呆脑
2013/11/21
0
7
Docker管理工具之Shipyard

What is Shipyard? Shipyard是一套对docker集群中资源进行管理的工具,包括对Docker容器、主机等资源的管理。它最大的特点是在核心部件之外还支持扩展镜像 ,可以根据需求灵活实现应用负载均...

SoulMio
08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IOasd

能够使用FileUtils常用方法操作文件 字符流体系介绍 : 在 IO 开发中, 我们传输最频繁的数据为字符, 而以字节的方式来传输字符数据会使程序员丧失对数据内容的判断.因为程序员只认识字符, 不认...

码农屌丝
20分钟前
0
0
创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
3
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
9
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部