Docker Swarm——基本使用

使用Swarm

用户在安装Docker 1.12或更新版本后,即可直接尝试Swarm模式的相关功能。假定分别准备两个Linux主机,作为管理节点(实际上也同时具备工作节点功能)和工作节点。

  • swarm init:在管理节点上创建一个集群
  • node list:列出集群中的节点信息
  • swarm join:加入一个新的节点到已有的集群中
  • swarm update:更新一个Swarm集群
  • swarm leave:离开一个Swarm集群

此外,还可以使用docker service命令部署Docker应用服务到集群中;

1. 创建集群

在管理节点上执行如下命令来创建一个新的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 info命令可以查看到集群的信息:
Docker Swarm——基本使用_第1张图片

还可以查看集群中已经加入节点情况,此时只有一个管理节点:

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

在这里插入图片描述

此时,在管理节点上再次查看集群中节点情况,可以看到新加入的工作节点:
在这里插入图片描述

4. 使用集群服务

实际上有两种方法:

  1. 一种是使用Docker原来的客户端命令,只要指定使用Swarm manager服务的监听地址即可。例如,manager服务监听地址为:2377,则可以通过指定-H :2377选项来继续使用Docker客户端,执行Docker命令,例如ps、info、run等。

  2. 另外一种方法,也是推荐的做法,是使用新的docker service命令,可以获得包括多主键网络等高级的特性支持。

创建好Swarm集群后,可以在管理节点上执行如下命令来快速创建一个应用服务,并指定服务的复制份数为2。如下命令所示,默认会自动检查确认服务状态都正常:

docker service create --replicas 2 --name ping_app debian:jessie ping docker.com

在这里插入图片描述

1. 查看服务:
此时使用sevice ls查看集群中服务情况,会发现新创建的ping_app服务;还可通过service inspect命令来查看服务的具体信息:
在这里插入图片描述

Docker Swarm——基本使用_第2张图片

同时,管理节点和工作节点上都运行了一个容器,镜像为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的负载均衡其代理到对应的服务示例。用户也可以配置独立的负载均衡服务,后端指向集群中各个节点对应的外部端口,获取高可用特性。

5. 更新集群

用户可以使用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:任务历史的保留个数

6. 离开集群

节点可以在任何时候通过swarm leave命令离开一个集群。命令格式为

docker swarm leave [options]

支持-f,–force意味着强制离开集群

你可能感兴趣的:(Docker,docker,运维,linux)