Docker集中化web界面管理平臺shipyard

Shipyardgithub)是創建在docker集羣管理工具Citadel之上的能夠管理容器、主機等資源的web圖形化工具。包括coreextension兩個版本,core即shipyard主要是把多個 Docker host上的 containers 統一管理(支持跨越多個host),extension即shipyard-extensions添加了應用路由和負載均衡、集中化日誌、部署等。 nginx

1. 幾個概念

engine

一個shipyard管理的docker集羣能夠包含一個或多個engine(引擎),一個engine就是監聽tcp 端口的docker daemon。shipyard管理docker daemon、images、containers徹底基於Docker API,不須要作其餘的修改。另外,shipyard能夠對每一個engine作資源限制,包括CPU和內存;由於TCP監聽相比Unix socket方式會有必定的安全隱患,因此shipyard還支持經過SSL證書與docker後臺進程安全通訊。 git

rethinkdb

RethinkDB是一個shipyard項目的一個docker鏡像,用來存放帳號(account)、引擎(engine)、服務密鑰(service key)、擴展元數據(extension metadata)等信息,但不會存儲任何有關容器或鏡像的內容。通常會啓動一個shipyard/rethinkdb容器shipyard-rethinkdb-data來使用它的/data做爲數據卷供另外rethinkdb一個掛載,專門用於數據存儲。 github

2. 搭建過程

修改tcp監聽

Shipyard 要管理和控制 Docker host 的話須要先修改 Docker host 上的默認配置使其監聽tcp端口(能夠繼續保持Unix socket)。有如下2種方式 web

  1. sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d啓動docker daemon。若是爲了不每次啓動都寫這麼長的命令,能夠直接在/etc/init/docker.conf中修改。
  2. 修改/etc/default/docker的DOCKER_OPTS
    DOCKER_OPTS="-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock"。這種方式在我docker version 1.4.1 in ubuntu 14.04上並無生效。
重啓服務
$ sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d
驗證
$ netstat -ant |grep 4243
tcp6 0 0 :::4243


啓動rethinkdb

shipyard(基於Python/Django)在v1版本時安裝過程比較複雜,既能夠經過在host上安裝,也能夠部署shipyard鏡像(包括shipyard-agent、shipyard-deploy等組件)。v2版本簡化了安裝過程,啓動兩個鏡像就完成: redis


獲取一個/data的數據卷
$sudo docker run -it -d --name shipyard-rethinkdb-data \
--entrypoint /bin/bash shipyard/rethinkdb -l
使用數據卷/data啓動RethinkDB
docker run -it -P -d --name shipyard-rethinkdb \
--volumes-from shipyard-rethinkdb-data shipyard/rethinkdb

部署shipyard鏡像

啓動shipyard控制器: docker


sudo docker run -it -p 8080:8080 -d --name shipyard \
--link shipyard-rethinkdb:rethinkdb shipyard/shipyard

至此已經能夠經過瀏覽器訪問http://host:8080來訪問shipyard UI界面了。 shell

第一次run後,關閉再次啓動時直接使用: json


sudo docker stop shipyard shipyard-rethinkdb shipyard-rethinkdb-data
sudo docker start shipyard-rethinkdb-data shipyard-rethinkdb shipyard

圖示

登陸:
docker-shipyard-login
默認用戶名/密碼爲 admin/shipyard ubuntu

主界面:
docker-shipyard
Dashboard展現在添加engine時指定的CPU以及內存的使用狀況。 瀏覽器

容器:
docker-shipyard-containers
shipyard管理的全部docker主機的全部容器,包括stop和running狀態的。能夠直接點擊DEPLOY按鈕來從鏡像運行出其餘容器,與docker run的選項幾乎相同,能夠限制CPU和內存的使用,詳見shipyard的containers文檔

容器操做:
docker-shipyard-containers2
能夠stop、start、restart容器,經過LOGS能夠看到容器日誌輸出,SCALE可 以批量(規模化)部署該容器,這個操做與容器的Type屬性息息相關。由於shipyard能夠管理多個host的docker容器,因此啓動一個容器的 type能夠是:service——能夠在具備相同label的engine上運行;unique——一個host上只容許某個鏡像的一個實例運 行;host——在指定的host上運行容器,啓動的時候經過--label host:<host-id>語法指定docker host。

engine管理:
docker-shipyard-engine
一 個engine就是一個docker daemon,docker daemon下啓動着多個containers,能夠對engine限制一個總體的CPU和內存限制,shipyard經過TCP端口鏈接daemon。 須要注意的是docker client與server的版本問題:(由於shipyard目前還在快速的完善過程,不一樣版本的docker應該是向下兼容的)

curl -X GET http://172.29.88.223:4243/v1.15/containers/json
client and server don't have same version (client : 1.15, server: 1.13)

3. shipyard-cli

目前圖形化界面能作的操做其實不多,正在強大的是經過shipyard提供的命令行窗口(稱做Shipyard CLI)進行管理,參考http://shipyard-project.com/docs/usage/cli/
啓動命令行交互模式:

sudo docker run --rm -it shipyard/shipyard-cli

使用它甚至能夠替代docker客戶端。

sean@seanubt:~$ sudo docker run -it shipyard/shipyard-cli
shipyard cli> shipyard help
NAME:
shipyard - manage a shipyard cluster
USAGE:
shipyard [global options] command [command options] [arguments...]
VERSION:
2.0.8
COMMANDS:
login login to a shipyard cluster
change-password update your password
accounts show accounts
add-account add account
delete-account delete account
containers list containers
inspect inspect container
run run a container
stop stop a container
restart restart a container
scale scale a container
logs show container logs
destroy destroy a container
engines list engines
add-engine add shipyard engine
remove-engine removes an engine
inspect-engine inspect an engine
service-keys	list service keys
add-service-key adds a service key
remove-service-key removes a service key
extensions show extensions
add-extension add extension
remove-extension remove an extension
webhook-keys	list webhook keys
add-webhook-key adds a webhook key
remove-webhook-key removes a webhook key
info show cluster info
events show cluster events
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--generate-bash-completion
--version, -v print the version
登陸shipyard
shipyard cli> shipyard login
URL: http://172.29.88.205:8080
Username: admin
Password:
查看containers
shipyard cli> shipyard containers
啓動一個容器
shipyard cli> shipyard run --name nginx:1.7.6 --container-name web_test \
--cpus 0.2 \
--memory 64 \
--type service \
--hostname nginx-test \
--domain example.com \
--link redis:db \
--port tcp/172.29.88.205:81:8081 \
--port tcp/::8000 \
--restart "on-failure:5" \
--env FOO=bar \
--label dev \
查看容器日誌(只能接容器ID,暫不能使用容器名)
shipyard cli> shipyard logs ff2761d
關閉並移除容器
shipyard cli> shipyard destroy <container_id>

試用後以爲shipyard的web只實現了最基本的功能,若是須要方便的從web管理docker集羣的話,還須要作不少定製工做。

相關文章
相關標籤/搜索