Docker可視化管理工具--shipyard

今天在網上流量 docker 文章時偶然發現了一個 Docker 的 web 管理工具 shipyard,今天想起來介紹下,然而卻發現官網無法打開,去作者的 GitHub 一看缺發現這個項目已經放棄維護了,也是相當可惜啊。

PS.shipyard 是船塢或者船廠的意思,結合 Docker 一直以來是條類似貨輪的鯨魚,其實這個名字挺合適的。

作者由於沒有時間與精力繼續維護下去,在去年八月份就開始詢問是否有人感興趣接手這個項目,可惜過了幾個月依舊沒有人出現,只能無奈的決定停止這個項目,官網也被關掉了。開源屆每隔一陣子就會出現一個這樣的項目(當然我指的是比較大的項目,小的估計每幾天都有涼涼的),也是希望能有更多有能力的人能夠加入爲開源項目貢獻代碼的行列。

之前介紹了DOcker 的 web 管理工具 DockerUI,下面介紹下 Docker 的另一個 web 界面管理工具 Shipyard 的使用。Shipyard(github)是建立在 docker 集羣管理工具 Citadel 之上的可以管理容器、主機等資源的 web 圖形化工具, 包括 core 和 extension 兩個版本,core 即 shipyard 主要是把多個 Docker host 上的 containers 統一管理(支持跨越多個 host),extension 即 shipyard-extensions 添加了應用路由和負載均衡、集中化日誌、部署等;Shipyard 是在 Docker Swarm 實現對容器、鏡像、docker 集羣、倉庫、節點進行管理的 web 系統。

瞭解 Shipyard 幾個概念

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 生態

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 的實現。

Shipyard 部署過程(下面是 centos7 下的安裝記錄)

好了,不說其他了,雖然官網掛了,項目也停止了,但是還是能用的,來體驗下吧

服務器 ip:182.48.115.233
主機名:node-1
centos7.2

1)安裝 docker 並配置加速

[root@node-1 ~]# yum install docker

[root@node-1 ~]# systemctl start docker

修改 docker 配置文件,添加下面一行,加速設置

[root@node-1 ~]# vim /etc/sysconfig/docker

......
ADD_REGISTRY='--add-registry xxx.mirror.aliyuncs.com'

然後重啓 docker

[root@node-1 ~]# systemctl restart docker  

2)下載鏡像(這些鏡像其實可以不用提前下載,執行下面安裝 shipyard 的命令後就會自動下載這些鏡像)

[root@node-1 ~]# docker pull alpine
[root@node-1 ~]# docker pull library/rethinkdb
[root@node-1 ~]# docker pull microbox/etcd
[root@node-1 ~]# docker pull shipyard/docker-proxy
[root@node-1 ~]# docker pull swarm
[root@node-1 ~]# docker pull shipyard/shipyard

[root@node-1 ~]# docker images
REPOSITORY  TAG IMAGE IDCREATED SIZE
docker.io/alpinelatest  02674b9cb1796 days ago  3.984 MB
xxx.mirror.aliyuncs.com/library/rethinkdb   latest  b66f932ecd3c6 days ago  182.6 MB
docker.io/nginx latest  3448f27c273f7 days ago  109.4 MB
docker.io/swarm latest  36b1e23becab3 months ago15.85 MB
xxx.mirror.aliyuncs.com/shipyard/shipyard   latest  36fb3dc0907d7 months ago58.82 MB
xxx.mirror.aliyuncs.com/shipyard/docker-proxy   latest  cfee14e5d6f216 months ago   9.464 MB
xxx.mirror.aliyuncs.com/microbox/etcd   latest  6aef84b9ec5a21 months ago   17.86 MB

3)安裝 shipyard

shipyard 的部署非常簡單,因爲官網已經停止維護了,只好通過下面的方式安裝:

# 安裝主節點(管理端)
curl -s https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | bash -s
#添加節點
curl -sSL https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | ACTION=node DISCOVERY=etcd:// 主節點 IP:4001 bash -s

注意:由於 deploy 在執行時需要訪問 /var/run/docker.sock,所以需要 root 權限,或者爲該文件添加權限。

[root@localhost ~]# curl -s https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | bash -s
Deploying Shipyard
 -> Starting Database
 -> Starting Discovery
 -> Starting Cert Volume
 -> Starting Proxy
 -> Starting Swarm Manager
 -> Starting Swarm Agent
 -> Starting Controller
Waiting for Shipyard on 182.48.115.233:8080

Shipyard available at http://182.48.115.233:8080
Username: admin Password: shipyard

至此,shipyard 就已經安裝完成了。使http://182.48.115.233:8080 就可以訪問了(iptables 防火牆要是開啓了,要記得打開 8080 端口訪問),默認用戶名爲 admin 密碼爲 shipyard。

登錄進去後,可以在”ACCOUNTS”選項裏管理用戶,可以添加用戶,並對用戶進行角色授權。

其他需要注意的幾點

注意一下:

1)最好關閉防火牆

2)添加 Node 節點可能失敗,可以進行多次嘗試

添加 node 節點的操作

curl -sSL https://raw.githubusercontent.com/shipyard/shipyard-project.com/master/site/themes/shipyard/static/deploy | ACTION=node DISCOVERY=etcd:// 主節點 IP:4001 bash -s

節點添加之後,訪問 shipyard 頁面,發現節點已經添加上了,如下:

可以在 shipyard 頁面裏做所添加的節點機裏的 docker 容器進行關閉、刪除、重啓、重命名、提交新鏡像、狀態和日誌查看能操作,如下:

可以在 shipyard 頁面裏添加鏡像和容器,還可以添加私有倉庫 Registry。

另外,在 shipyard 訪問頁面裏,還提供了容器的 console 控制檯,如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章