zoukankan      html  css  js  c++  java
  • Docker集中化web界面管理平台-Shipyard部署记录

    之前介绍了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系统。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ---------------------DockerUI---------------------
    功能:通过Web浏览器的命令行来管理的任务。
    DockerUI的优点
    1)可以对运行着的容器进行批量操作
    2)在容器网络中-会显示容器与容器间的网络关系
    3)在Volumes中显示了所有挂载目录
      
    DockerUI一个致命的缺点:不支持多主机
    试想一下,如果有N台docker主机时-我就需要一台台的用dockerui进行管理,想想都觉得麻烦。
    就单台主机而言,dockerui是一款不错的管理工具。
      
    ---------------------Shipyard---------------------
    功能:简化对横跨多个主机的Docker容器集群进行管理
    通过Web用户界面,你可以大致浏览相关信息,比如你的容器在使用多少处理器和内存资源、在运行哪些容器,还可以检查所有集群上的事件日志。
    其特性主要包括:
    1)支持节点动态集群,可扩展节点的规模(swarm、etcd方案)
    2)支持镜像管理、容器管理、节点管理等功能
    3)可视化的容器管理和监控管理
    4)在线容console终端

    了解Shipyard几个概念

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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生态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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下的安装记录)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    服务器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 ID            CREATED             SIZE
    docker.io/alpine                                latest              02674b9cb179        6 days ago          3.984 MB
    xxx.mirror.aliyuncs.com/library/rethinkdb       latest              b66f932ecd3c        6 days ago          182.6 MB
    docker.io/nginx                                 latest              3448f27c273f        7 days ago          109.4 MB
    docker.io/swarm                                 latest              36b1e23becab        3 months ago        15.85 MB
    xxx.mirror.aliyuncs.com/shipyard/shipyard       latest              36fb3dc0907d        7 months ago        58.82 MB
    xxx.mirror.aliyuncs.com/shipyard/docker-proxy   latest              cfee14e5d6f2        16 months ago       9.464 MB
    xxx.mirror.aliyuncs.com/microbox/etcd           latest              6aef84b9ec5a        21 months ago       17.86 MB
     
    3)安装shipyard
    shipyard的部署非常简单,官方提供了在线的脚本通过命令进行安装,使用"curl -s https://shipyard-project.com/deploy | bash -s" 命令进行安装即可。
    deploy实际上是一个shell脚本,实现docker run启动shipyard依赖的容器。如果觉得每次通过curl启动不方便也可以将这个脚本下载到本地磁盘进行操作。
    启动完成以后,在浏览器输入http://host:8080即可访问,默认用户名为admin密码为shipyard。
    注意:由于deploy在执行时需要访问/var/run/docker.sock,所以需要root权限,或者为该文件添加权限。
     
    [root@node-1 ~]# curl -s https://shipyard-project.com/deploy | bash -s
    Deploying Shipyard
     -> Starting Database
    Unable to find image 'rethinkdb:latest' locally
    Trying to pull repository xxx.mirror.aliyuncs.com/rethinkdb ...
    Pulling repository xxx.mirror.aliyuncs.com/rethinkdb
    Trying to pull repository docker.io/library/rethinkdb ...
    latest: Pulling from docker.io/library/rethinkdb
    Digest: sha256:29640c7d5015832c40305ad5dcc5d0996ce79b87f7e32d2fd99c9d65ad9414d4
     -> 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端口访问)

    shipyard访问页面默认登录用户名:admin,密码:shipyard,登录进去后,可以在"ACCOUNTS"选项里管理用户,可以添加用户,并对用户进行角色授权。

    其他需要注意的几点

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    注意一下:
    1)最好关闭防火墙
    2)添加 Node 节点可能失败,可以进行多次尝试
       
    ---------------------------------------------------------------------------------------------------------------
    上面安装shipyard的脚本是英文版的,其实还有中文版的脚本,下面两种都可以使用:
       
    1)安装shipyard
    # curl -sSL http://dockerclub.net/public/script/deploy |  bash -s                      ==> 中文版
    # curl -sSL https://shipyard-project.com/deploy | bash -s                              ==> 英文版
       
    2)添加node节点
    # curl -sSL http://dockerclub.net/public/script/deploy | ACTION=node DISCOVERY=etcd://<shipyard部署机ip> bash -s                ==> 中文版
    # curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://<shipyard部署机ip> bash -s                       ==> 英文版
       
    3)删除shipyard(在节点机上执行,就会将节点从shipyard管理里踢出)
    # curl http://dockerclub.net/public/script/deploy | ACTION=remove bash -s                   ==> 中文版
    # curl -sSL https://shipyard-project.com/deploy | ACTION=remove bash -s                     ==> 英文版
    ---------------------------------------------------------------------------------------------------------------
     
    其他:
    1)如果想将安装重新来一遍
    [root@node-1 ~]# for i in `docker ps |sed '1d'| awk '{print $NF}'`;do docker rm -f $i; done
    [root@node-1 ~]# docker stop `docker ps -a -q`
    [root@node-1 ~]# docker rm `docker ps -a -q`
    [root@node-1 ~]# curl -s https://shipyard-project.com/deploy | bash -s
      
    2)停止运行镜像
    [root@node-1 ~]# docker stop shipyard-proxy shipyard-certs shipyard-discovery shipyard-rethinkdb shipyard-swarm-agent shipyard-swarm-manager shipyard-controller
      
    3)启动运行的镜像
    [root@node-1 ~]# docker start shipyard-proxy shipyard-certs shipyard-discovery shipyard-rethinkdb shipyard-swarm-agent shipyard-swarm-manager shipyard-controller
      
    4)查看运行的docker进程
    [root@node-1 ~]# docker ps
    CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                            NAMES
    32300643aa0b        shipyard/shipyard:latest       "/bin/controller --de"   2 minutes ago       Up 19 seconds       0.0.0.0:8080->8080/tcp                           shipyard-controller
    9401d5535126        swarm:latest                   "/swarm j --addr 182."   2 minutes ago       Up 23 seconds       2375/tcp                                         shipyard-swarm-agent
    cc2582122780        swarm:latest                   "/swarm m --replicati"   2 minutes ago       Up 22 seconds       2375/tcp                                         shipyard-swarm-manager
    be8ce42808b9        shipyard/docker-proxy:latest   "/usr/local/bin/run"     2 minutes ago       Up 27 seconds       0.0.0.0:2375->2375/tcp                           shipyard-proxy
    b4cab6784387        alpine                         "sh"                     3 minutes ago       Up 26 seconds                                                        shipyard-certs
    00b256f9f05a        microbox/etcd:latest           "/bin/etcd -addr 182."   3 minutes ago       Up 25 seconds       0.0.0.0:4001->4001/tcp, 0.0.0.0:7001->7001/tcp   shipyard-discovery
    c4299c6b88bb        rethinkdb                      "rethinkdb --bind all"   3 minutes ago       Up 24 seconds       8080/tcp, 28015/tcp, 29015/tcp                   shipyard-rethinkdb
      
    5)使用自定义shipyard镜像镜像
    [root@node-1 ~]# curl -sSL https://shipyard-project.com/deploy | IMAGE=shipyard/shipyard:test bash -s

    添加node节点的操作

    1
    2
    3
    4
    5
    6
    7
    8
    比如添加182.48.115.235作为一个节点。那么就需要在182.48.115.235这台机器上执行下面的命令:
    [root@k8s-node-1 ~]# curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://182.48.115.233:4001 bash -s
    注意:
    1)上面命令中的182.48.115.233是shipyard的部署机的ip;
    2)182.48.115.233机器的iptables防火墙要打开4001端口。最好是关闭防火墙
      
    同理,添加其他节点操作均是在节点机上执行下面命令(节点机器要能和shipyard部署机通信)
    # curl -sSL https://shipyard-project.com/deploy | ACTION=node DISCOVERY=etcd://182.48.115.233:4001 bash -s

    节点添加之后,访问shipyard页面,发现节点已经添加上了,如下:

    可以在shipyard页面里做所添加的节点机里的docker容器进行关闭、删除、重启、重命名、提交新镜像、状态和日志查看能操作,如下:

    可以在shipyard页面里添加镜像和容器,还可以添加私有仓库Registry。

    另外,在shipyard访问页面里,还提供了容器的console控制台,如下:

    ***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/mokliu/p/7504029.html
Copyright © 2011-2022 走看看