Docker图形界面管理

  • DockerUI
    DockerUI是一个与Remote API交互的Web界面;目标是提供纯客户端实现,以便轻松连接和管理docker(该项目尚未完成,仍处于重大发展阶段);

  • Shipyard
    Shipyard也是基于Docker API实现的容器图形管理系统,支持container、images、engine、cluster等功能,可满足我们基本的容器部署需求;

DockerUI

DockerUI是一个基于Docker API提供图形化页面简单的容器管理系统,支持容器管理、镜像管理;

优点:
1)可以对运行着的容器进行批量操作;
2)在容器网络中-会显示容器与容器间的网络关系;
3)在Volumes中显示了所有挂载目录;

缺点:
多台主机时管理不方便;

步骤1

#下载镜像docker pull abh1nav/dockerui

步骤2

如果您使用Unix套接字运行Docker(默认):

docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock --name dockerui abh1nav/dockerui:latest -e="/docker.sock"

如果您通过tcp运行Docker:

docker run -d -p 9000:9000 --name dockerui abh1nav/dockerui:latest -e="http://127.0.0.1:4243"

步骤3

打开浏览器 http://192.168.0.33:9000

Docker UI可视化管理以及监控体系_第1张图片


将unix套接字绑定到DockerUI容器比将Docker守护进程通过TCP暴露更安全;可以考虑基本的auth运行DockerUI的Nginx,感兴趣的可以试试自己构建Docker Images,下面也提供了原本的Dockerfile文件


官方提供的Dockerfile

FROM debian:jessie

RUN apt-get update && apt-get install --no-install-recommends -y \
    ca-certificates \
    curl \
    mercurial \
    git-core

RUN curl -s https://storage.googleapis.com/golang/go1.2.2.linux-amd64.tar.gz | tar -v -C /usr/local -xz

ENV GOPATH /goENV GOROOT /usr/local/goENV PATH $PATH:/usr/local/go/bin:/go/binADD . /app/
WORKDIR /app/
RUN go build dockerui.go
EXPOSE 9000ENTRYPOINT ["./dockerui"]

Shipyard

Shipyard构建于Docker Swarm之上,能够管理Docker资源,包括容器、映像、私有注册表等;Shipyard与其他管理应用程序的不同之处在于它提升了可组合性,并且与Docker Remote API 100%兼容,可以说是Docker的专业管理工具了,Shipyard管理集群范围内的容器、映像、节点、私有注册表以及提供基于身份验证和角色的访问控制;

优点:
1)支持节点动态集群,可扩展节点的规模(swarm、etcd方案)
2)支持镜像管理、容器管理、节点管理等功能
3)可视化的容器管理和监控管理
4)在线容console终端

用户界面
用户界面提供对Docker群集的简单管理;管理容器、群集映像、私有注册表、身份验证等。

API
Shipyard的核心是API,Shipyard从头开始建造,中心有API;而Web UI使用API来实现所有功能;通过使用服务密钥,可以直接与Shipyard API交互以管理Docker Swarm集群并构建自定义集成;

Shipyard分为手动部署和自动部署两种方式部署;

镜像名称 运行服务 描述
rethinkdb shipyard数据库 一个NoSQL数据库,用于存储shipyard系统的数据,比如账号、节点、容器等信息
microbox/etcd 服务注册、发现系统 K/V存储系统,用于Swarm节点实现服务注册、发现;也支持consul、zookeeper
shipyard/docker-proxy docker API代理 连接本地/var/run/docker.sock代理,用于让Swarm Agent连接API管理
swarm swarm集群 官方管理Docker集群工具,使得多个engine为一个整体管理,对外提供Swarm manager API,用户就像操作单台Engine一样
shipyard/shipyard shipyard前端 容器Web管理系统,内部连接Swarm Manager管理容器和RethinkDB存储数据

手动部署

#Datastore 容器docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb#Discovery 容器docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery microbox/etcd -name discovery#Proxy 容器docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest#Swarm Manager 容器docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 etcd://192.168.0.33:4001#Swarm Agent 容器docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.0.33:2375 etcd://192.168.0.33:4001#Controller 容器docker run -ti -d --restart=always --name shipyard-web --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 8080:8080 dockerclub/shipyard:latest server -d tcp://swarm:3375

打开浏览器 http://192.168.0.33:8080
Docker UI可视化管理以及监控体系_第2张图片

Docker容器监控(cAdvisor+InfluxDB+Grafana)

cAdvisor
Google开源的工具,用于监控Docker主机和容器系统资源,通过图形页面实时显示数据,但不存储;它通过
宿主机/proc、/sys、/var/lib/docker等目录下文件获取宿主机和容器运行信息;

InfluxDB
是一个分布式的时间序列数据库,用来存储cAdvisor收集的系统资源数据;

Grafana
可视化展示平台,可做仪表盘,并图表页面操作很方面,数据源支持zabbix、Graphite、InfluxDB、OpenTSDB、Elasticsearch等;

三者关系
cAdvisor容器数据采集 -> InfluxDB容器数据存储 -> Grafana可视化展示

InfluxDB容器构建

docker run -d -p 8083:8083 -p 8086:8086 --name influxdb tutum/influxdb

访问http://192.168.0.33:8083

Docker UI可视化管理以及监控体系_第3张图片

创建cadvisor数据库

Docker UI可视化管理以及监控体系_第4张图片

创建cadvisor用户,并设置密码

Docker UI可视化管理以及监控体系_第5张图片

cAdvisor容器构建

docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro \--volume=/var/lib/docker/:/var/lib/docker:ro --link influxdb:influxdb -p 8081:8080 --name=cadvisor google/cadvisor:latest -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086

访问http://192.168.0.33:8081

Docker UI可视化管理以及监控体系_第6张图片

Grafana容器构建

docker run -d -p 3000:3000 -e INFLUXDB_HOST=influxdb -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=cadvisor -e INFLUXDB_PASS=cadvisor --link influxdb:influxsrv --name grafana grafana/grafana

访问http://192.168.0.33:3000,默认账号名:admin密码:admin
Docker UI可视化管理以及监控体系_第7张图片

配置数据源
Docker UI可视化管理以及监控体系_第8张图片

配置图形生成
Docker UI可视化管理以及监控体系_第9张图片