Shipyard簡介
Shipyard是一個集成管理docker容器、鏡像、Registries的系統,它具有以下特點: 1.支持多節點的集成管理 2.可動態加載節點 3.可托管node下的容器
鏡像環境准備
# docker pull rethinkdb # docker pull microbox/etcd # docker pull shipyard/docker-proxy # docker pull swarm # docker pull shipyard/shipyard
手動安裝(以本地ip:10.211.55.20為例)
1. 數據存儲(rethinkdb)
docker run -ti -d --name shipyard-rethinkdb rethinkdb
2.服務發現(etcd)
為了啟用Swarm leader選擇,我們必須使用來自Swarm容器的外部鍵值存儲。此處,我們使用Etcd作為服務發現工具。可以選用的服務發現工具還有Consul、Zookeeper等。
docker run -ti -d -p 4001:4001 -p 7001:7001 --name shipyard-discovery microbox/etcd -name discovery
3. Docker代理服務(shipyard/docker-proxy)
默認情況下,Docker引擎只偵聽套接字。 我們可以重新配置引擎以使用TLS,或者您可以使用代理容器。 這是一個非常輕量級的容器,它只是將請求從TCP轉發到Docker監聽的Unix套接字。
docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy
4.Swarm管理節點(swarm manager)
- 將IP-OF-HOST替換為對應的ip;
- 將SWARM-INNER-PORT換成對應的端口,默認2375.
- 將SWARM-MAP-PORT換成映射到host機的ip,例如2376
格式:docker run -ti -d --name -p [SWARM-MAP-PORT]:[SWARM-INNER-PORT] shipyard-swarm-manager docker.io/swarm manage --host tcp://0.0.0.0:[SWARM-INNER-PORT] etcd://[IP-OF-HOST]:4001
實例化:docker run -ti -d --name shipyard-swarm-manager swarm manage --host tcp://0.0.0.0:3375 etcd://10.211.55.20:4001
5.Swarm Agent節點將當前docker節點加入到集群中
- 將IP-OF-HOST替換為對應的ip
- 將IP-OF-ETCD-HOST換成etcd所在的docker節點ip。
- 將LOCAL-DOCKER-PORT換成本機docker所監聽的端口,例如2375
格式:docker run -ti -d --name shipyard-swarm-agent docker.io/swarm join --addr [IP-OF-HOST]:[LOCAL-DOCKER-PORT] etcd://[IP-OF-ETCD-HOST]:4001 實例: docker run -ti -d --name shipyard-swarm-agent swarm join --addr 10.211.55.20:2375 etcd://10.211.55.20:4001
6.啟動Shipyard管理工具
docker run -ti -d --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 8083:8080 shipyard/shipyard server -d tcp://swarm:3375
7.瀏覽器訪問:http://192.168.1.108:8083/ 即可進入鏈接
默認用戶名/密碼 admin/shipyard
防火牆需打開4001端口,否則防火牆會攔住容器。
Nginx做域名轉發
在nginx配置文件http塊里添加如下代碼 upstream shipyard { server 192.168.1.108:8083; }
server { listen 80; server_name mm.shipyard.com; location / { proxy_pass http://shipyard; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
以下三行代碼為nginx做WebSockets跳轉否則,在執行shell時會報400錯誤
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";