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
将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容器监控(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
创建cadvisor
数据库
创建cadvisor
用户,并设置密码
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
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