TCP端口2377集群管理端口 TCP与UDP端口7946节点之间通讯端口 TCP与UDP端口4789 overlay网络通讯端口 语法 Active:集群中该Node可以被指派Task master创建Swarm(要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥) 注:上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。 其中,--advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。 该条命令的node将会成为manager node,该命令会生成两个token: manager token和worker token,通过 以下命令只能在manager节点上执行 降级后 语法 OPTIONS Active:集群中该Node可以被指派Task 示例: 语法 Options 退出集群(需要退出的节点执行) 语法 Options 集群一旦退出 需要重新使用 语法 Options 示例 语法 Options 示例 虽然通过docker service update命令也可以修改任务数量,但是docker还提供了一个修改任务数量的命令。 语法 示例 manager节点执行 语法 Options 示例 manager执行,可查看一个或多个服务的任务列表 语法 Options 示例 manager执行,可查看一个或多个服务的详细情况 语法 Options 示例 manager 执行,删除一个或多个服务 语法 示例 manager执行,查看服务或任务的日志 语法 Options 示例Docker Swarm集群部署
初始化集群
docker swarm init [OPTIONS]
--advertise-addr:
多网卡的情况下,指定需要使用的ip--listen-addr:
指定监听的 ip 与端口--availability:
节点的有效性 ("active"|"pause"|"drain")
Pause:集群中该Node不可以被指派新的Task,但是其他已经存在的Task保持运行
Drain:集群中该Node不可以被指派新的Task,Swarm Scheduler停掉已经存在的Task,并将它们调度到可用的Node上[root@master ~]# docker swarm init --advertise-addr 172.16.60.95
Swarm initialized: current node (kfi2r4dw6895z5yvhlbyzfck6) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3fzyz5knfbhw9iqlzxhb6dmzdtr0izno9nr7iqc5wid09uglh8-0mocmawzvm3xge6s37n5a48fw 172.16.60.95:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
docker swarm join --token TOKEN MANAGER_NODE_IP
提供不同的token来将当前node以不同身份加入到集群。添加节点
[root@host22 ~]# docker swarm join [OPTIONS] HOST:PORT
--token:
所需加入集群的token--advertise-addr:
多网卡的情况下,指定需要使用的ip--listen-addr:
指定监听的 ip 与端口--availability:
节点的有效性("active"|"pause"|"drain")修改节点
节点降级
[root@host22 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
q55vhgfsos7vilq85vx41s8ol * host22 Ready Active Leader
ttv7htcjineq7cjutkuf3fbl9 host226 Ready Active Reachable
[root@host22 ~]# docker node demote host226
Manager host226 demoted in the swarm.
[root@host22 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
q55vhgfsos7vilq85vx41s8ol * host22 Ready Active Leader
ttv7htcjineq7cjutkuf3fbl9 host226 Ready Active
修改节点参数
docker node update [OPTIONS] NODE
--availability
: 节点的有效性("active"|"pause"|"drain")
Pause:集群中该Node不可以被指派新的Task,但是其他已经存在的Task保持运行
Drain:集群中该Node不可以被指派新的Task,Swarm Scheduler停掉已经存在的Task,并将它们调度到可用的Node上[root@host22 ~]# docker node update --availability pause host226
host226
[root@host22 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
q55vhgfsos7vilq85vx41s8ol * host22 Ready Active Leader
ttv7htcjineq7cjutkuf3fbl9 host226 Ready Pause
[root@host22 ~]# docker node update --availability Active host226
host226
[root@host22 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
q55vhgfsos7vilq85vx41s8ol * host22 Ready Active Leader
ttv7htcjineq7cjutkuf3fbl9 host226 Ready Active
退出节点
docker node rm [OPTIONS] NODE [NODE...]
--force , -f
: 强制从集群中删除节点
示例:ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
q55vhgfsos7vilq85vx41s8ol * host22 Ready Active Leader
ttv7htcjineq7cjutkuf3fbl9 host226 Ready Active
[root@host22 ~]# docker node rm -f host226
host226
[root@host22 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
q55vhgfsos7vilq85vx41s8ol * host22 Ready Active Leader
退出集群
docker swarm leave [OPTIONS]
--force , -f
: 强制从集群中删除节点
示例:docker swarm leave host226
token
加入集群应用创建
创建服务
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
--detach , -d
: 指定容器运行于前台还是后台,默认为false--name
: 服务名称--network
: 网络连接--publish , -p
: 端口映射--env , -e
: 设置环境变量--tty , -t
: 分配tty设备,该可以支持终端登录--mount
: 文件挂载--replicas
: 指定任务数量 docker service create --replicas 3 -p 443:8080 --name api_131 \
--mount type=bind,source=/storage/apiapp_log,destination=/go/src/logs \
--mount type=bind,source=/root/apiapp/app.conf,destination=/root/app.conf \
--mount type=bind,source=/root/apiapp/run_application.sh,destination=/root/run_application.sh \
-e RUN_MODE=Production \
-td 192.168.77.53:5000/gbss/api-swarm:1.3.1
修改服务
修改服务参数
docker service update [OPTIONS] SERVICE
--detach , -d
: 指定容器运行于前台还是后台--env-add
: 增加环境变量--env-rm
: 删除环境变量--mount-add
: 增加文件挂载--mount-rm
: 通过目标路径删除文件挂载--network-add
: 增加网络设置--network-rm
: 移除网络设置--publish-add
: 增加端口映射--publish-rm
: 通过目标端口移除端口映射--replicas
: 修改任务数量docker service update --replicas 2 nginx_1
修改任务数量
该命令可以修改一个或多个服务的任务数量docker service scale SERVICE=REPLICAS [SERVICE=REPLICAS...]
docker service scale ser1=3 ser2=5
查看服务
查看服务列表
docker service ls [OPTIONS]
--filter , -f
: 过滤条件docker service ls --filter name=redis
查看任务列表
docker service ps [OPTIONS] SERVICE [SERVICE...]
--filter , -f
: 过滤条件docker service ps nginx_1
查看服务详情
docker service inspect [OPTIONS] SERVICE [SERVICE...]
--pretty
: 格式化输出信息docker service inspect nginx_1
删除服务
docker service rm SERVICE [SERVICE...]
docker service rm nginx_1
查看服务日志
docker service logs [OPTIONS] SERVICE|TASK
--follow , -f
: 跟随输出--tail
: 显示最新的N条日志--since
: 显示从某个时间开始的所有日志--timestamps , -t
: 显示时间戳docker service logs -f nginx_1