docker可視化集中管理工具shipyard安裝部署
Shipyard是在Docker Swarm實現對容器、鏡像、docker集群、倉庫、節點進行管理的web系統。
1.Shipyard功能
Shipyard是一個集成管理docker容器、鏡像、Registries的系統,它可以簡化對橫跨多個主機的Docker容器集群進行管理. 通過Web用戶界面,你可以大致瀏覽相關信息,比如你的容器在使用多少處理器和內存資源、在運行哪些容器,還可以檢查所有集群上的事件日志。
2.Shipyard特點:
支持多節點的集成管理; 支持鏡像、容器、節點管理等功能; 可視化的容器管理和監控管理; 可動態加載節點。
3.Shipyard幾個概念
1)engine
一個shipyard管理的docker集群可以包含一個或多個engine(引擎),一個engine就是監聽tcp端口的dockerdaemon。shipyard管理docker daemon、images、containers完全基於
Docker API,不需要做其他的修改。另外,shipyard可以對每個engine做資源限制,包括CPU和內存;因為TCP監聽相比Unix socket方式會有一定的安全隱患,所以shipyard還支持通過
SSL證書與docker后台進程安全通信。
2)rethinkdb
RethinkDB是一個shipyard項目的一個docker鏡像,用來存放賬號(account)、引擎(engine)、服務密鑰(service key)、擴展元數據(extension metadata)等信息,但不會存儲
任何有關容器或鏡像的內容。
4.Shipyard生態
shipyard是由shipyard控制器以及周圍生態系統構成,以下按照deploy啟動順序進行介紹(下面幾個就是shipyard使用腳本安裝后,啟動的幾個容器名)
1)RethinkDB deploy首先啟動的就是RethinkDB容器,shipyard采用RethinkDB作為數據庫來保存用戶等信息 2)Discovery 為了使用Swarm,我們需要一個外部的密鑰值存儲群容器,shipyard默認是采用了etcd。 3)shipyard_certs 證書管理容器,實現證書驗證功能 4)Proxy 默認情況下,Docker引擎只監聽Socket,我們可以重新配置引擎使用TLS或者使用一個代理容器,轉發請求從TCP到Docker監聽的UNIX Socket。 5)Swarm Manager Swarm管理器 6)Swarm Agent Swarm代理,運行在每個節點上。 7)Controller shipyard控制器,Remote API的實現和web的實現。
5.Centos7.2系統下Shipyard(中文版)部署記錄
查看系統版本及ip
[root@pre1 gh]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@pre1 gh]# ifconfig|grep 192.168.3.141 inet 192.168.3.141 netmask 255.255.255.0 broadcast 192.168.3.255
6.安裝最新版docker
[root@pre1 ~]# curl -fsSL https://get.docker.com/ | sh
修改docker配置文件,添加下面一行,進行docker加速設置
[root@pre1 ~]# vim /etc/sysconfig/docker //在文件底部添加下面一行, (這里就是直接寫: xxx.mirror.aliyuncs.com) ADD_REGISTRY='--add-registry xxx.mirror.aliyuncs.com'
啟動docker服務
[root@docker-218 ~]# systemctl start docker
加入開機自啟動
[root@pre1 ~]# systemctl enable docker
7.下載相關鏡像
[root@pre1 ~]# docker pull rethinkdb [root@pre1 ~]# docker pull microbox/etcd [root@pre1 ~]# docker pull shipyard/docker-proxy [root@pre1 ~]# docker pull swarm [root@pre1 ~]# docker pull dockerclub/shipyard
8.下載官方一鍵部署腳本
鏈接: https://pan.baidu.com/s/1WHGOe6LX9-eU39vf1SzbRg 提取碼: tbkf
一鍵部署
[root@pre1 ~]# chmod 755 shipyard-deploy [root@pre1 ~]# sh shipyard-deploy Deploying Shipyard -> Starting Database -> Starting Discovery -> Starting Cert Volume -> Starting Proxy -> Starting Swarm Manager -> Starting Swarm Agent -> Starting Controller Waiting for Shipyard on 192.168.3.141:8080 Shipyard available at http://192.168.3.141:8080 Username: admin Password: shipyard
9.查看部署好的shipyard容器
[root@pre1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 076c8c7bd1a9 dockerclub/shipyard:latest "/bin/controller --d…" 16 hours ago Up 16 hours 0.0.0.0:8080->8080/tcp shipyard-controller 4fb76868ce60 swarm:latest "/swarm j --addr 192…" 16 hours ago Up 16 hours 2375/tcp shipyard-swarm-agent 0eedb34ffd18 swarm:latest "/swarm m --replicat…" 16 hours ago Up 16 hours 2375/tcp shipyard-swarm-manager 54751b647576 shipyard/docker-proxy:latest "/usr/local/bin/run" 16 hours ago Up 16 hours 0.0.0.0:2375->2375/tcp shipyard-proxy 752d7adeb566 alpine "sh" 16 hours ago Up 16 hours shipyard-certs 030228a5adcb microbox/etcd:latest "/bin/etcd -addr 192…" 16 hours ago Up 16 hours 0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp shipyard-discovery cce83381bd72 rethinkdb "rethinkdb --bind all" 16 hours ago Up 16 hours 8080/tcp, 28015/tcp, 29015/tcp shipyard-rethinkd
最后訪問http://192.168.3.141:8080,使用admin/shipyard用戶名和密碼登錄即可
如果想要修改web訪問端口,則操作如下:
[root@pre1 ~]# cat shipyard-deploy |grep 8080 echo " PORT: specify the listen port for the controller (default: 8080)" SHIPYARD_PORT=${PORT:-8080}
比如將腳本中默認的8080端口改為80端口
[root@pre1 ~]# sed -i 's/8080/80/g' shipyard-deploy
然后重新部署即可
附:登錄頁面

進入之后的管理頁面

10.刪除Shipyard環境操作
[root@pre1 ~]# cat shipyard-deploy |ACTION=remove bash Removing Shipyard -> Removing Database -> Removing Discovery -> Removing Cert Volume -> Removing Proxy -> Removing Swarm Agent -> Removing Swarm Manager -> Removing Controller Done
查看驗證是否刪除
[root@pre1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11.Shipyard添加其他節點主機
比如將172.16.60.220機器節點加入到上面的shipyard管理中.
則需要在被加入節點機器上如下操作:
1) 在被加入的節點上按照上面的最新地址下載shipyard-deploy
2) 執行下面操作 (注意下面etcd地址要寫成shipyard部署機的ip地址. 首次執行時會自動下載鏡像,需要等待一段時間)
[root@pre2 ~]# cat shipyard-deploy| ACTION=node DISCOVERY=etcd://192.168.3.141:4001 bash Adding Node -> Starting Cert Volume Unable to find image 'alpine:latest' locally latest: Pulling from library/alpine …. -> Starting Swarm Agent Node added to Swarm: 192.168.3.142
查看安裝好的shipyard
[root@pre2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6acbc12d72bc swarm:latest "/swarm j --addr 192…" About an hour ago Up About an hour 2375/tcp shipyard-swarm-agent eabdf5e5d81b swarm:latest "/swarm m --replicat…" About an hour ago Up About an hour 2375/tcp shipyard-swarm-manager 3a3d104b5918 shipyard/docker-proxy:latest "/usr/local/bin/run" About an hour ago Up About an hour 0.0.0.0:2375->2375/tcp shipyard-proxy eb85858f6de6 alpine "sh" About an hour ago Up About an hour shipyard-certs
注意,添加節點時,上面一鍵腳本需要運行在被添加的節點主機上,而不是shipyard部署節點的機器上.
然后登錄http://192.168.3.141:8080,在"容器管理"-"主機節點"中看到添加的節點信息了.
12.刪除節點機
[root@pre2 ~]# cat shipyard-deploy |ACTION=remove bash -s Removing Shipyard -> Removing Database -> Removing Discovery -> Removing Cert Volume -> Removing Proxy -> Removing Swarm Agent -> Removing Swarm Manager -> Removing Controller Done
驗證是否刪除成功
[root@pre2 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES