web界面管理平台shipyard管理docker容器

用shipyard来管理docker

docker多了之后就得需要个管理工具来整合和管理,shipyard是个不错的选择
docker的管理工具用docker运行起来就行,简单步骤如下:
起一个RethinkDB的data volume实例:

docker run -it -d --name shipyard-rethinkdb-data \
    --entrypoint /bin/bash shipyard/rethinkdb -l

用刚才创建的data volume再起一个rethinkdb实例

docker run -it -P -d --name shipyard-rethinkdb \
    --volumes-from shipyard-rethinkdb-data shipyard/rethinkdb

起一个shipyard的controller

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

然后浏览器IP:8080就能访问到shipyard管理页面了,前面再加层nginx,配个域名更好
默认用户名是admin shipyard

添加一个docker的host,这里叫Engines
写好名字,标签,填写好host的CPU数和内存数,然后在Address里写的时候发现问题了
docker启动的时候得指定远程管理端口。
如果是源码安装的docker,需要修改下启动配置/etc/init/docker.conf,设置管理端口:

description     "Run docker"
 
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
 
respawn
 
script
    /usr/bin/docker -d -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
end script

或者直接指定启动参数,例如

/usr/bin/docker -d -H tcp://0.0.0.0:2375-H unix:///var/run/docker.sock >> /dev/null 2>&1 &

然后在添加Engines里的Address里写http://ip:2375
然后如果使用SSL on tcp的话,还需要写上证书,这样docker host就添加好了,可以在一处管理多个host上的docker

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

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

图示

登录:

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

主界面:

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

容器:
docker-shipyard-containers
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)

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>

不一一列举。。。

时间: 2024-10-22 09:33:49

web界面管理平台shipyard管理docker容器的相关文章

浅谈利用元数管理平台自动化管理指标的方法

目录: 一.企业指标管理的三个核心问题 二.解决指标管理的问题,需要从三个方面入手 三.通过元数据管理平台,实现指标管理在技术上的自动化 四.总结 本文讲的是浅谈利用元数管理平台自动化管理指标的方法,指标直接反映企业的生产运营状况,为企业决策提供数据支撑.随着国家大数据战略与企业数字化转型的驱动,指标的作用越来越重要,指标管理上的诸多痛点让全企业统一的指标管理成为普遍需求.但要想把指标管理好并不容易,不仅需要科学合理的方法,还需要技术的强力支撑. 指标作为一种业务元数据,与企业元数据有着千丝万缕

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

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

如何在 Docker 容器中运行支持 OData 的 JBoss 数据虚拟化 GA

大家好,我们今天来学习如何在一个 Docker 容器中运行支持 OData(译者注:Open Data Protocol,开放数据协议) 的 JBoss 数据虚拟化 6.0.0 GA(译者注:GA,General Availability,具体定义可以查看WIKI).JBoss 数据虚拟化是数据提供和集成解决方案平台,将多种分散的数据源转换为一种数据源统一对待,在正确的时间将所需数据传递给任意的应用或者用户.JBoss 数据虚拟化可以帮助我们将数据快速组合和转换为可重用的商业友好的数据模型,通过

linux下安装Rancher Docker容器管理平台

Rancher Labs 公司目前有2个产品. Rancher Docker容器管理平台 RancherOS 一种适合Docker运行的Linux发行版,类似于CoreOS Rancher Docker容器管理平台 如果说原生的Docker是一个一个集装箱,Rancher可以比喻成集装箱船,平台化管控,带着应用航行. rancher 承载 docker Docker环境安装 以下是在CentOS7的环境下安装Rancher Docker官方安装方式 curl -sSL https://get.d

Docker管理工具Shipyard初体验

本文讲的是Docker管理工具Shipyard初体验,[编者的话]Shipyard是一个Docker管理工具,有WEB界面也可以通过CLI来管理Docker主机.镜像.容器 .要方便的管理Docker相关服务,基于Web的方式来管理肯定是首选.本文介绍了Shipyard的使用方式. Shipyard是一个Docker的管理工具,你可以用它管理在不同机器上Docker镜像和容器的部署,但是在本篇博文中,我将会向你展示如何在你的本地机器上使用Shipyard. 在你机器上安装Shipyard的时候会

WebSocket在容器化管理平台的应用

介绍 Websocket是一个持久化协议,相对于HTTP这种非持久协议而言.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,与HTTP一样基于已建立的TCP连接来传输数据.但是与HTTP协议不同的地方就是:WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信. 运行机制 传统的HTTP客户端与服务器请求响应

使用OpenStack管理Docker容器(二)

本文讲的是使用OpenStack管理Docker容器(二),[编者的话]本文将讲述如何使用OpenStack创建并管理Docker,有3种流行的使用方法,使用的分别是Nova Docker驱动,Heat Docker插件,以及Magnum.这篇文章分成2部分,第一部分,将主要介绍Nova Docker驱动的用法,第二部分,是关于Heat Docker插件和Magnum.这是序列文章的第二部分,即最后一部分. 这篇文章是之前的那篇<如何使用OpenStack管理Docker容器>的后续,在这篇文

Flocker —— 轻松管理 Docker 容器及其数据

Flocker 可轻松实现 Docker 容器及其数据的管理.这是一个数据卷管理器和多主机的 Docker 集群管理工具,你可以通过它来控制数据.可用来在 Docker 中运行你的数据库.查询和 K/V 存储,并在应用中轻松使用这些服务. https://yqfile.alicdn.com/a19a07969a4c4597be2a8d5e249e1ec6f152dda5.png "> Flocker 同时也提供了 API 和命令行工具来进行功能的操作,你可以用它来: 部署一个多容器应用到多

CoreOS实践指南(七):Docker容器管理服务

注:本文首发于CSDN,转载请标明出处. [编者按]在"漫步云端:CoreOS实践指南"系列的前几篇文章中,ThoughtWorks的软件工程师林帆主要介绍了CoreOS及其相关组件和使用.说到CoreOS,不得不提Docker.当Docker还名不见经传的时候,CoreOS创始人Alex就凭着敏锐直觉,预见了这个项目的价值,将Docker做为了这个系统支持的第一套应用程序隔离方案.本文将主要介绍在具体的场景下,如何在CoreOS中恰当的管理Docker容器. 作者简介: 林帆,生在8