Shipyard(github)是建立在docker集群管理工具Citadel之上的可以管理容器、主機等資源的web圖形化工具。包括core和extension兩個版本,core即shipyard主要是把多個 Docker host上的 containers 統一管理(支持跨越多個host),extension即shipyard-extensions添加了應用路由和負載均衡、集中化日志、部署等。
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后台進程安全通信。
rethinkdb
RethinkDB
是一個shipyard項目的一個docker鏡像,用來存放賬號(account)、引擎(engine)、服務密鑰(service key)、擴展元數據(extension metadata)等信息,但不會存儲任何有關容器或鏡像的內容。一般會啟動一個shipyard/rethinkdb
容器shipyard-rethinkdb-data來使用它的/data
作為數據卷供另外rethinkdb一個掛載,專門用於數據存儲。
2. 搭建過程
修改tcp監聽
Shipyard 要管理和控制 Docker host 的話需要先修改 Docker host 上的默認配置使其監聽tcp端口(可以繼續保持Unix socket)。有以下2種方式
sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d
啟動docker daemon。如果為了避免每次啟動都寫這么長的命令,可以直接在/etc/init/docker.conf
中修改。- 修改
/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 :::* LISTEN
注意:如果是centos6系統必須添加 -H unix:///var/run/docker.sock
部署shipyard鏡像
1.curl -s https://shipyard-project.com/deploy | bash -s 完成安裝
vi /etc/sys/net/ipv4/ip_forward
注意:如果出現
INFO[1197] Registering on the discovery service every 1m0s... addr=10.100.132.151:2376 discovery=etcd://10.100.132.153:4001
ERRO[1200] client: etcd cluster is unavailable or misconfigured
往往是因為ip_forward沒有啟用造成的,需要修改ip_forwad=1
2.如果有多太docker鏡像,需要添加節點
將上面的腳本里面的ACTION修改為node
添加變量DISCOVERY=etcd://第一台服務器ip:4001注意:如果出現
vi /etc/sys/net/ipv4/ip_forward
INFO[1197] Registering on the discovery service every 1m0s... addr=10.100.132.151:2376 discovery=etcd://10.100.132.153:4001
ERRO[1200] client: etcd cluster is unavailable or misconfigured
往往是因為ip_forward沒有啟用造成的,需要修改ip_forwad=1
現在可以打開你的ip:8080查看部署情況
另外感謝shipyard制作了這么好用的工具。