Docker UI可視化管理以及監控體系

Docker圖形界面管理

  • DockerUI
    DockerUI是一個與Remote API交互的Web界面;目標是提供純客戶端實現,以便輕鬆鏈接和管理docker(該項目還沒有完成,仍處於重大發展階段);前端

  • Shipyard
    Shipyard也是基於Docker API實現的容器圖形管理系統,支持container、images、engine、cluster等功能,可知足咱們基本的容器部署需求;linux

DockerUI

DockerUI是一個基於Docker API提供圖形化頁面簡單的容器管理系統,支持容器管理、鏡像管理;git

優勢:
1)能夠對運行着的容器進行批量操做;
2)在容器網絡中-會顯示容器與容器間的網絡關係;
3)在Volumes中顯示了全部掛載目錄;golang

缺點:
多臺主機時管理不方便;web

步驟1

#下載鏡像docker pull abh1nav/dockerui

步驟2

若是您使用Unix套接字運行Docker(默認):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:9000api

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
shipyard web

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

http://192.168.0.33:8083

建立cadvisor數據庫

建立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

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
http://192.168.0.33:3000

配置數據源
配置數據源

配置圖形生成
配置圖形生成

相關文章
相關標籤/搜索