一、DockerUI
基于DockerAPI實作的鏡像容器倉庫管理
docker run -d -p 59000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
三大優點:
1:可以對運作着的容器進行批量操作
2:在容器網絡中-會顯示容器與容器間的網絡關系
3:在Volumes中顯示了所有挂載目錄
對我目前需求而言,好想dockerui 和 shipyard能和二為一呀。
一個緻命的缺點:
不支援多主機
容我想一下,如果我有N台docker主機時-我就需要一台台的用dockerui進行管理,想想都覺得麻煩。
就單台主機而言,dockerui是一款不錯的管理工具。
二、Shipyard以及docker叢集的監控
介紹一下接下來用到的各元件
1、docker
Docker daemon引擎
2、consul
服務發現和配置共享的服務軟體
3、swarm
基于docker的叢集排程管理軟體,docker 1.2版本中已經自動內建叢集功能了。
4、rethinkdb
RethinkDB是一個完全支援Memcached協定、資料可持久化的工業級key-value存儲系統,它自帶了cluster和web資源管理功能。
5、shipyard
docker可視化資源管理平台
6、registrator
服務自動注冊
7、nginx
web服務代理軟體
8、consultemplate
docker服務自動發現軟體,這個要結合nginx使用,當我們在主控端上啟動一個容器服務時,這時候consultemplate就會自動從consul服務上發現在這個容器,并更新nginx配置檔案。
9、cadvisor
google公司開源的docker容器資源監控軟體。通過主控端的/proc /sys /var/lib/docker等目錄收取容器運作資訊。
10、influxdb
InfluxDB 是一個開源分布式時序、事件和名額資料庫。使用 Go 語言編寫,無需外部依賴。其設計目标是實作分布式和水準伸縮擴充。用來存儲cadvisor的資訊。
11、grafana
圖表展現服務,功能非常強大。
12、graylog+ Elasticsearch
具有報警選項的可插入日志和事件分析伺服器
Shipyard一款WEB界面的docker管理工具,使用過程中涉及到幾個子產品-通訊方式,如下圖:

一:proxy從/var/run/docker.sock這個unixsocket擷取資料,并被動等待swarm-agent查詢
二:swarm-agent通過proxy擷取資料,并向etcd推送
以上兩個 裝在需要被管理的伺服器上
三:etcd被動等待swarm-agent推送Docker主機的注冊資訊
四:swarm-manager使用etcd(shipyard-discovery)擷取基本資料
五:shipyard 跟rethinkdb和swarm-manager進行通訊
官方提供的安裝指令
#123伺服器
docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb
docker run -ti -d -p 54001:4001 -p 57001:7001 --restart=always --name shipyard-discovery microbox/etcd -name discovery
docker run -ti -d -p 2375:2375 --hostname=192.168.220.123 --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest
docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 etcd://192.168.220.123:54001
docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.220.123:2375 etcd://192.168.220.123:54001
docker run -ti -d --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 58081:8080 shipyard/shipyard:latest server -d tcp://swarm:3375
#127伺服器,shipyard有兩個節點 一個是自己本身,一個是127
docker run -ti -d -p 2375:2375 --hostname=192.168.220.127 --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest
docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.220.127:2375 etcd://192.168.220.123:54001
IE通路:http://192.168.220.123:58081/
登入:admin/Shipyard
鏡像和容器都自動加載啦,功能子產品:容器、鏡像、節點、倉庫、賬号、事件等,重點在容器和鏡像的管理。
容器-檢視啟動資訊
以及重新開機、停止、暫停、銷毀、重命名、進控制台、複制啟動容器(scale)等操作
當有多個節點時,使用pull images,會在每個節點上都下載下傳images
點評:功能很實用,基本符合實際要求。
來,現在開始搞監控
建立influxdb資料庫 用于存cadviser的采集的資料
docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name influxsrv tutum/influxdb

在網頁API裡面:
CREATE DATABASE "cadvisor" #建庫
CREATE USER "username" WITH PASSWORD 'password' #建使用者
建立cadvisor采集名額
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --link influxsrv:influxsrv --name=cadvisor google/cadvisor:latest -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
再通路主控端8081端口
cpu 記憶體 網絡 容器資訊 都可以看到了
grafana的展示
docker run -d -p 3000:3000 -e INFLUXDB_HOST=192.168.0.202 -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=influxdb -e INFLUXDB_PASS=influxdb --link influxsrv:influxsrv --name grafana grafana/grafana
Shipyard:
https://www.shipyard-project.com/增加主控端之後可以注冊到etcd裡面發現節點後用shipyard進行管理 小規模shipyard還是比較好用的