Docker GUI之Shipyard+Swarm

Shipyard(github)是建立在docker集群管理工具Citadel之上的可以管理容器、主机等资源的web图形化工具。包括core和extension两个版本,core即shipyard主要是把多个 Docker host上的 containers 统一管理(支持跨越多个host),extension即shipyard-extensions添加了应用路由和负载均衡、集中化日志、部署等

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后台进程安全通信。

rethinkdb
RethinkDB是一个shipyard项目的一个docker镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。一般会启动一个shipyard/rethinkdb容器shipyard-rethinkdb-data来使用它的/data作为数据卷供另外rethinkdb一个挂载,专门用于数据存储。

2.启动Swarm Manager

docker run -tid \
    -p 3375:3375 \
    --restart=always \
    --name shipyard-swarm-manager \
    swarm:latest \
    manage --host tcp://0.0.0.0:3375 consul://[consul server ip]:8500

3.启动Swarm Agent

docker run -tid \
    --restart=always \
    --name shipyard-swarm-agent \
    swarm:latest \
    join --addr [local ip]:2375 consul://[consul server ip]:8500

4.查看集群状态

[root@node1 ~]# docker -H 127.0.0.1:3375 info
Containers: 9
 Running: 8
 Paused: 0
 Stopped: 1
Images: 22
Server Version: swarm/1.2.4
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 2
 node1.docker.com: 192.168.20.113:2375
  └ ID: HXUI:TQ3U:RMGP:5Q2W:V4L5:6JDM:4DB6:LEKK:4JBU:GQVP:NV2C:P72Y
  └ Status: Healthy
  └ Containers: 7 (7 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.883 GiB
  └ Labels: kernelversion=3.10.0-327.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
  └ UpdatedAt: 2016-08-11T03:04:21Z
  └ ServerVersion: 1.12.0
 node2.docker.com: 192.168.20.112:2375
  └ ID: U6ZN:GZ5O:O3QQ:TMFD:CVHR:4GAX:BVTC:HE7D:XRGD:GC24:HBSZ:ZBEL
  └ Status: Healthy
  └ Containers: 2 (1 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 1.015 GiB
  └ Labels: kernelversion=3.10.0-327.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
  └ UpdatedAt: 2016-08-11T03:04:39Z
  └ ServerVersion: 1.12.0
Plugins:
 Volume: 
 Network: 
Swarm: 
 NodeID: 
 Is Manager: false
 Node Address: 
Security Options:
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: linux
Architecture: amd64
CPUs: 2
Total Memory: 2.898 GiB
Name: 390a6e318641
Docker Root Dir: 
Debug Mode (client): false
Debug Mode (server): false
WARNING: No kernel memory limit support

5.启动Datastore(rethinkdb)

https://hub.tenxcloud.com/repos/docker_library/rethinkdb
https://hub.alauda.cn/repos/library/rethinkdb
提示:可以使用国内源index.tenxcloud.com/docker_library/rethinkdb

docker run -tid \
     --restart=always \
     --name shipyard-rethinkdb \
     -p 28015:28015 \
     -p 29015:29015 \
     -v /data/rethinkdb:/data \
     index.tenxcloud.com/docker_library/rethinkdb

6.部署shipyard镜像

docker run -tid \
    --restart=always \
    --name shipyard-controller \
    --link shipyard-rethinkdb:rethinkdb \
    --link shipyard-swarm-manager:swarm \
    -p 80:8080 \
    shipyard/shipyard:latest \
    server \
    -d tcp://swarm:3375

提示:
shipyard这里使用了--link和别名
rethinkdb默认监听28015,29015,8080,支持集群

[root@node1 data]# docker logs -f 3717177be520
Recursively removing directory /data/rethinkdb_data/tmp
Initializing directory /data/rethinkdb_data
Running rethinkdb 2.3.4~0jessie (GCC 4.9.2)...
Running on Linux 3.10.0-327.el7.x86_64 x86_64
Loading data from directory /data/rethinkdb_data
warn: Cache size does not leave much memory for server and query overhead (available memory: 944 MB).
warn: Cache size is very low and may impact performance.
Listening for intracluster connections on port 29015
Listening for client driver connections on port 28015
Listening for administrative HTTP connections on port 8080
Listening on cluster addresses: 127.0.0.1, 172.17.0.3, ::1, fe80::42:acff:fe11:3%252
Listening on driver addresses: 127.0.0.1, 172.17.0.3, ::1, fe80::42:acff:fe11:3%252
Listening on http addresses: 127.0.0.1, 172.17.0.3, ::1, fe80::42:acff:fe11:3%252
Server ready, "3717177be520_uhp" 624aac86-1dc9-4846-9e89-848e64cb077f

[root@node1 data]# docker logs -f 90ad377398b8
INFO[0000] shipyard version 3.0.5                       
INFO[0000] checking database                            
INFO[0002] created admin user: username: admin password: shipyard 
INFO[0002] controller listening on :8080

这个就是web GUI控制台 http://localhost
可以实现容器,镜像,集群节点,registry,账号,事件的管理,非常简洁
注意:shipyard控制台默认的用户名和密码为admin/shipyard

4.其它管理工具 shipyard命令行接口

docker run -it shipyard/shipyard-cli
shipyard cli> shipyard login
URL: http://192.168.192.10:8080
Username: admin
Password: 
shipyard cli> shipyard 
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

results matching ""

    No results matching ""