用户在安装Docker 1.12或更新版本后,即可直接尝试Swarm模式的相关功能。假定分别准备两个Linux主机,作为管理节点(实际上也同时具备工作节点功能)和工作节点。
swarm init
:在管理节点上创建一个集群node list
:列出集群中的节点信息swarm join
:加入一个新的节点到已有的集群中swarm update
:更新一个Swarm集群swarm leave
:离开一个Swarm集群此外,还可以使用docker service命令部署Docker应用服务到集群中;
在管理节点上执行如下命令来创建一个新的Swarm集群,创建成功后会自动提示如何加入更多节点到集群中。
docker swarm init --advertise-addr
注意返回的token串,这是集群的唯一id,假如集群的各个节点将需要这个信息。
另外,默认的管理服务端口为2377,需要能被工作节点访问到;另外,为了支持集群的成员发现和外部服务映射,还需要在左右节点上开启7946TCP/UDP端口和4789UDP端口。
Swarm init命令支持的参数包括:
-advertise-addr [:port]
:指定服务坚挺的地址和端口-autolock
:自动锁定管理服务的启停操作,对服务金鑫刚启动或停止都需要通过口令解锁-availavility string
:节点的可用性,包括active、pause、drain三种,默认为active-cert-expiry duration
:根整数的过期时长,默认为90天-data-path-addr
:指定数据流量使用的网络接口或地址-dispatcher-heartbeat duration
:分配组建的心跳时长,默认为5秒-external-ca external-ca
:指定使用外部的整数签名服务地址-force-new-cluster
:强制创建新集群-max-snapshots uint
:Raft协议快照保留的个数-snapshot-interval uint
:Raft协议进行快照的间隔(单位为事务个数),默认为10000个事务-task-history-limit int
:任务历史的保留个数,默认为5还可以查看集群中已经加入节点情况,此时只有一个管理节点:
docker node ls
先在管理节点上执行命令,以获取令牌:
docker swarm join-token manager
# 或
docker swarm join-token worker
在待加入的节点上执行返回的令牌:
docker swarm join --token SWMTKN-1-0d34ywmzntl5zho5cxmidslxlsizewbqesn26560e05iwdb0ws-ac66dgjkkai2m6bco1z5yzhgu 10.0.20.9:2377
此时,在管理节点上再次查看集群中节点情况,可以看到新加入的工作节点:
实际上有两种方法:
一种是使用Docker原来的客户端命令,只要指定使用Swarm manager服务的监听地址即可。例如,manager服务监听地址为
,则可以通过指定-H
选项来继续使用Docker客户端,执行Docker命令,例如ps、info、run等。
另外一种方法,也是推荐的做法,是使用新的docker service命令,可以获得包括多主键网络等高级的特性支持。
创建好Swarm集群后,可以在管理节点上执行如下命令来快速创建一个应用服务,并指定服务的复制份数为2。如下命令所示,默认会自动检查确认服务状态都正常:
docker service create --replicas 2 --name ping_app debian:jessie ping docker.com
1. 查看服务:
此时使用sevice ls查看集群中服务情况,会发现新创建的ping_app服务;还可通过service inspect命令来查看服务的具体信息:
同时,管理节点和工作节点上都运行了一个容器,镜像为debian:jessie,命令为ping docker.com
2. 扩展服务
用户还可以通过docker service scale
命令来对服务进行伸缩,例如将服务复制个数从2改为1:
服务使用完成后可以通过docker service rm
命令进行删除。
3. 使用外部地址:
Swarm通过路由机制支持对外映射到指定端口,该端口可以在集群中任意节点上进行访问,即使该节点上没有运行服务示例。需要在创建服务时使用–publish参数:
docker service create \
--name \
--publish published=,target=\
之后,用户访问集群中任意节点的,都会被Swarm的负载均衡其代理到对应的服务示例。用户也可以配置独立的负载均衡服务,后端指向集群中各个节点对应的外部端口,获取高可用特性。
用户可以使用docker swarm update [OPTIONS]
命令来更新一个集群,主要包括如下配置信息:
-autolock
:启动或关闭自动锁定-cert-expiry duration
:根证书的过期时长,默认为90天-dispatcher-heartbeat duration
:分配组建的心跳时长,默认为5秒-external-ca external-ca
:指定使用外部的证书签名服务地址-max-snapshots uint
:Raft协议快照保留的个数-snapshot-interval uint
:Raft协议进行快照的间隔(单位为事务个数),默认为10000个事务-task-history-limit int
:任务历史的保留个数节点可以在任何时候通过swarm leave
命令离开一个集群。命令格式为
docker swarm leave [options]
支持-f,–force意味着强制离开集群