DockerUI
DockerUI是一個與Remote API交互的Web界面;目標是提供純客戶端實現,以便輕鬆鏈接和管理docker(該項目還沒有完成,仍處於重大發展階段);前端
Shipyard
Shipyard也是基於Docker API實現的容器圖形管理系統,支持container、images、engine、cluster等功能,可知足咱們基本的容器部署需求;linux
DockerUI是一個基於Docker API提供圖形化頁面簡單的容器管理系統,支持容器管理、鏡像管理;git
優勢:
1)能夠對運行着的容器進行批量操做;
2)在容器網絡中-會顯示容器與容器間的網絡關係;
3)在Volumes中顯示了全部掛載目錄;golang
缺點:
多臺主機時管理不方便;web
#下載鏡像docker pull abh1nav/dockerui
若是您使用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"
打開瀏覽器 http://192.168.0.33:9000
api
將unix套接字綁定到DockerUI容器比將Docker守護進程經過TCP暴露更安全;能夠考慮基本的auth運行DockerUI的Nginx,感興趣的能夠試試本身構建Docker Images,下面也提供了本來的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構建於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
cAdvisor
Google開源的工具,用於監控Docker主機和容器系統資源,經過圖形頁面實時顯示數據,但不存儲;它經過
宿主機/proc、/sys、/var/lib/docker等目錄下文件獲取宿主機和容器運行信息;
InfluxDB
是一個分佈式的時間序列數據庫,用來存儲cAdvisor收集的系統資源數據;
Grafana
可視化展現平臺,可作儀表盤,並圖表頁面操做很方面,數據源支持zabbix、Graphite、InfluxDB、OpenTSDB、Elasticsearch等;
三者關係
cAdvisor容器數據採集 -> InfluxDB容器數據存儲 -> Grafana可視化展現
docker run -d -p 8083:8083 -p 8086:8086 --name influxdb tutum/influxdb
訪問http://192.168.0.33:8083
建立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
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