Docker GUI之Shipyard+Swarm
- 官方网站:
http://shipyard-project.com/
https://docs.docker.com/swarm/install-w-machine/
https://github.com/shipyard/docker-private-registry
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