Docker集中化web界面管理平臺shipyard

jopen 9年前發布 | 32K 次閱讀 Docker

Shipyardgithub)是建立在docker集群管理工具Citadel之上的可以管理容器、主機等資源的web圖形化工具。包括coreextension兩個版本,core即shipyard主要是把多個 Docker host上的 containers 統一管理(支持跨越多個host),extension即shipyard-extensions添加了應用路由和負載均衡、集中化日志、部署等。

1. 幾個概念</h2>

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. 搭建過程</h2>

修改tcp監聽

Shipyard 要管理和控制 Docker host 的話需要先修改 Docker host 上的默認配置使其監聽tcp端口(可以繼續保持Unix socket)。有以下2種方式

  1. sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d啟動docker daemon。如果為了避免每次啟動都寫這么長的命令,可以直接在/etc/init/docker.conf中修改。
  2. 修改/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 


啟動rethinkdb

shipyard(基于Python/Django)在v1版本時安裝過程比較復雜,既可以通過在host上安裝,也可以部署shipyard鏡像(包括shipyard-agent、shipyard-deploy等組件)。v2版本簡化了安裝過程,啟動兩個鏡像就完成:


獲取一個/data的數據卷
$sudo docker run -it -d --name shipyard-rethinkdb-data \
--entrypoint /bin/bash shipyard/rethinkdb -l
使用數據卷/data啟動RethinkDB
docker run -it -P -d --name shipyard-rethinkdb \
--volumes-from shipyard-rethinkdb-data shipyard/rethinkdb
</td> </tr> </tbody> </table>

部署shipyard鏡像

啟動shipyard控制器:


  • sudo docker run -it -p 8080:8080 -d --name shipyard \
    --link shipyard-rethinkdb:rethinkdb shipyard/shipyard
    </td> </tr> </tbody> </table>

    至此已經可以通過瀏覽器訪問http://host:8080來訪問shipyard UI界面了。

    第一次run后,關閉再次啟動時直接使用:


    sudo docker stop shipyard shipyard-rethinkdb shipyard-rethinkdb-data
    sudo docker start shipyard-rethinkdb-data shipyard-rethinkdb shipyard
    </td> </tr> </tbody> </table>

    圖示

    登錄:
    Docker集中化web界面管理平臺shipyard
    默認用戶名/密碼為 admin/shipyard

    主界面:
    Docker集中化web界面管理平臺shipyard
    Dashboard展示在添加engine時指定的CPU以及內存的使用情況。

    容器:
    Docker集中化web界面管理平臺shipyard
    shipyard管理的所有docker主機的所有容器,包括stop和running狀態的。可以直接點擊DEPLOY按鈕來從鏡像運行出其他容器,與docker run的選項幾乎相同,可以限制CPU和內存的使用,詳見shipyard的containers文檔

    容器操作:
    Docker集中化web界面管理平臺shipyard
    可以stop、start、restart容器,通過LOGS可以看到容器日志輸出,SCALE可 以批量(規模化)部署該容器,這個操作與容器的Type屬性息息相關。因為shipyard可以管理多個host的docker容器,所以啟動一個容器的 type可以是:service——可以在具有相同label的engine上運行;unique——一個host上只允許某個鏡像的一個實例運 行;host——在指定的host上運行容器,啟動的時候通過--label host:語法指定docker host。

    engine管理:
    Docker集中化web界面管理平臺shipyard
    一 個engine就是一個docker daemon,docker daemon下啟動著多個containers,可以對engine限制一個整體的CPU和內存限制,shipyard通過TCP端口連接daemon。 需要注意的是docker client與server的版本問題:(因為shipyard目前還在快速的完善過程,不同版本的docker應該是向下兼容的)

    </tr> </tbody> </table>

    3. shipyard-cli</h2>
    

    目前圖形化界面能做的操作其實很少,正在強大的是通過shipyard提供的命令行窗口(稱作Shipyard CLI)進行管理,參考http://shipyard-project.com/docs/usage/cli/
    啟動命令行交互模式:

    sudo docker run --rm -it shipyard/shipyard-cli

    使用它甚至可以替代docker客戶端。

    curl -X GET http://172.29.88.223:4243/v1.15/containers/json
    client and server don't have same version (client : 1.15, server: 1.13)
    </td>

    </tr> </tbody> </table>
    原文地址:http://seanlook.com/2014/12/29/docker-shipyard-centralized-management-webui/

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!

    sean@seanubt:~$ sudo docker run -it shipyard/shipyard-cli
    shipyard cli> shipyard help
    NAME:
    shipyard - manage a shipyard cluster
    USAGE:
    shipyard [global options] command [command options] [arguments...]
    VERSION:
    2.0.8
    COMMANDS:
    login login to a shipyard cluster
    change-password update your password
    accounts show accounts
    add-account add account
    delete-account delete account
    containers list containers
    inspect inspect container
    run run a container
    stop stop a container
    restart restart a container
    scale scale a container
    logs show container logs
    destroy destroy a container
    engines list engines
    add-engine add shipyard engine
    remove-engine removes an engine
    inspect-engine inspect an engine
    service-keys    list service keys
    add-service-key adds a service key
    remove-service-key removes a service key
    extensions show extensions
    add-extension add extension
    remove-extension remove an extension
    webhook-keys    list webhook keys
    add-webhook-key adds a webhook key
    remove-webhook-key removes a webhook key
    info show cluster info
    events show cluster events
    help, h Shows a list of commands or help for one command
    GLOBAL OPTIONS:
    --help, -h show help
    --generate-bash-completion
    --version, -v print the version
    登錄shipyard
    shipyard cli> shipyard login
    URL: http://172.29.88.205:8080
    Username: admin
    Password:
    查看containers
    shipyard cli> shipyard containers
    啟動一個容器
    shipyard cli> shipyard run --name nginx:1.7.6 --container-name web_test \
    --cpus 0.2 \
    --memory 64 \
    --type service \
    --hostname nginx-test \
    --domain example.com \
    --link redis:db \
    --port tcp/172.29.88.205:81:8081 \
    --port tcp/::8000 \
    --restart "on-failure:5" \
    --env FOO=bar \
    --label dev \
    查看容器日志(只能接容器ID,暫不能使用容器名)
    shipyard cli> shipyard logs ff2761d
    關閉并移除容器
    shipyard cli> shipyard destroy

    試用后覺得shipyard的web只實現了最基本的功能,如果需要方便的從web管理docker集群的話,還需要做很多定制工作。


    </td>

  • sesese色