shipyard是一個開源的docker管理平臺,其特性主要包括:node
1 支持鏡像管理、容器管理。 2 支持控制檯命令 3 容器資源消耗監控 4 支持集羣swarm,能夠隨意增長節點 5 支持控制用戶管理權限,能夠設置某個容器對某個用戶只讀、管理權限。 6 有漢化版
缺點:linux
1 不支持image管理; 2 不支持container批量操做。 3 啓動容器較多,佔用每一個節點的一部分資源
Shipyard的幾個概念web
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後臺進程安全通訊。 2)rethinkdb RethinkDB是一個shipyard項目的一個docker鏡像,用來存放帳號(account)、引擎(engine)、服務密鑰(service key)、 擴展元數據(extension metadata)等信息,但不會存儲任何有關容器或鏡像的內容。
Shipyard生態docker
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的實現。
系統:Centos7
時間同步
可鏈接外網,添加yum源
關閉selinux
[root@localhost ~]# yum install docker -y [root@localhost ~]# docker start docker [root@localhost ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
1.下載鏡像,下載前需先配置加速器,不然下載速度感人......數據庫
1.打開https://dev.aliyun.com/ 連接,按提示申請一個帳戶安全
2.點擊容器鏡像服務,再點擊容器加速器按提示設置便可bash
加速器配置好後開始下載鏡像curl
[root@localhost ~]#docker pull rethinkdb [root@localhost ~]#docker pull microbox/etcd [root@localhost ~]#docker pull shipyard/docker-proxy [root@localhost ~]#docker pull swarm [root@localhost ~]#docker pull dockerclub/shipyard
2.修改安裝腳本,修改成下載中文鏡像socket
a.修改成下載中文鏡像 [root@localhost ~]#wget https://shipyard-project.com/deploy
[root@localhost ~]#grep -n shipyard:latest deploy [root@localhost ~]#sed -i 's/shipyard\/shipyard:latest/dockerclub\/shipyard:latest/g' deploy b.修改端口 #確保8080端口沒有被使用,不然要修改腳本 [root@localhost ~]#netstat -tlnp | grep 8080 #修改腳本 [root@localhost ~]#grep -n 'PORT:-8080' deploy SHIPYARD_PORT=${PORT:-8080} #修改成 SHIPYARD_PORT=${PORT:-指定端口} [root@localhost ~]#sed 's/PORT:-8080/PORT:-8090/g' deploy | grep "PORT:-8090"
3.啓動 sh deploytcp
[root@localhost ~]# sh deploy Unable to find image 'alpine:latest' locally Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 2fdfe1cd78c2: Pulling fs layer 2fdfe1cd78c2: Verifying Checksum 2fdfe1cd78c2: Download complete 2fdfe1cd78c2: Pull complete Digest: sha256:ccba511b1d6b5f1d83825a94f9d5b05528db456d9cf14a1ea1db892c939cda64 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.0.104:8080 Shipyard available at http://192.168.0.104:8080
Username: admin Password: shipyard
根據提示信息 訪問 http://192.168.0.104:8080 ,用戶名和密碼爲admin:shipyard
注:刪除命令 cat deploy | ACTION=remove bash
4.訪問Shipyard
輸入帳號密碼登陸
5.添加node節點(node節點須要安裝docker並啓動)
[root@localhost ~]# curl https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://192.168.0.104:4001 bash
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 10119 100 10119 0 0 4445 0 0:00:02 0:00:02 --:--:-- 4444 Adding Node -> Starting Cert Volume Unable to find image 'alpine:latest' locally Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 2fdfe1cd78c2: Pulling fs layer 2fdfe1cd78c2: Verifying Checksum 2fdfe1cd78c2: Download complete 2fdfe1cd78c2: Pull complete Digest: sha256:ccba511b1d6b5f1d83825a94f9d5b05528db456d9cf14a1ea1db892c939cda64 -> Starting Proxy Unable to find image 'shipyard/docker-proxy:latest' locally Trying to pull repository docker.io/shipyard/docker-proxy ... latest: Pulling from docker.io/shipyard/docker-proxy 8f4ec95ceaee: Pulling fs layer ac77a345f217: Pulling fs layer 43039e3ef672: Pulling fs layer a3ed95caeb02: Pulling fs layer a3ed95caeb02: Waiting 43039e3ef672: Verifying Checksum 43039e3ef672: Download complete a3ed95caeb02: Verifying Checksum a3ed95caeb02: Download complete ac77a345f217: Verifying Checksum ac77a345f217: Download complete 8f4ec95ceaee: Verifying Checksum 8f4ec95ceaee: Download complete 8f4ec95ceaee: Pull complete ac77a345f217: Pull complete 43039e3ef672: Pull complete a3ed95caeb02: Pull complete Digest: sha256:da6bbd1a145581a940d44940cce0f43705d7f8ec552a4e97e77104ec1b6dc3d1 -> Starting Swarm Manager Unable to find image 'swarm:latest' locally Trying to pull repository docker.io/library/swarm ... latest: Pulling from docker.io/library/swarm dd72058debf0: Pulling fs layer cb543654edaf: Pulling fs layer 44212202dc6d: Pulling fs layer 44212202dc6d: Verifying Checksum 44212202dc6d: Download complete cb543654edaf: Verifying Checksum cb543654edaf: Download complete dd72058debf0: Retrying in 5 seconds dd72058debf0: Retrying in 4 seconds dd72058debf0: Retrying in 3 seconds dd72058debf0: Retrying in 2 seconds dd72058debf0: Retrying in 1 second dd72058debf0: Verifying Checksum dd72058debf0: Download complete dd72058debf0: Pull complete cb543654edaf: Pull complete 44212202dc6d: Pull complete Digest: sha256:c97a27b020ae4439432c842769d8e731661d5987962e33004114e4aba9d03b4c -> Starting Swarm Agent Node added to Swarm: 192.168.0.106
提示node添加成功,IP爲192.168.0.106,咱們在shipyard上查看一下
點擊節點管理,192.168.0.106已結添加完成
查看容器列表:
容器部署:
其餘:
#中止運行鏡像 [root@node-1 ~]# docker stop shipyard-proxy shipyard-certs shipyard-discovery shipyard-rethinkdb shipyard-swarm-agent shipyard-swarm-manager shipyard-controller #啓動運行的鏡像 [root@node-1 ~]# docker start shipyard-proxy shipyard-certs shipyard-discovery shipyard-rethinkdb shipyard-swarm-agent shipyard-swarm-manager shipyard-controller #刪除shipyard(在節點機上執行,就會將節點從shipyard管理裏踢出) # curl http://dockerclub.net/public/script/deploy | ACTION=remove bash -s ==> 中文版
# curl -sSL https://shipyard-project.com/deploy | ACTION=remove bash -s ==> 英文版