title: Docker系列之五:Docker 三剑客之 Docker Swarm
categories: Docker
tags:
- Docker
timezone: Asia/Shanghai
date: 2019-02-19

基本概念

节点

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。

节点分为管理 (manager) 节点和工作 (worker) 节点。

管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。

工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。

服务和任务

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

  • replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

  • global services 每个工作节点上运行一个任务

两种模式通过 docker service create 的 --mode 参数指定。

环境

[root@centos181001 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)[root@centos181001 ~]# docker -v
Docker version 18.09.1, build 4c52b90#### 准备3台服务器分别安装Docker
manager     11.11.11.61
worker1     11.11.11.62
worker2     11.11.11.63

第零步:关闭系统防火墙

setenforce 0
sed -i -r "/^SELINUX=/c SELINUX=disabled" /etc/selinux/config
which systemctl && systemctl stop firewalld
which systemctl && systemctl disable firewalld
which systemctl && systemctl stop iptables || service iptables stop
which systemctl && systemctl disable iptables || chkconfig iptables off

第一步:创建一个集群

1.在manager点上初始化集群

注意:如果你的 Docker 主机有多个网卡,拥有多个 IP,必须使用 --advertise-addr 指定 IP。

docker swarm init --advertise-addr 11.11.11.61[root@centos181001 ~]# docker swarm init --advertise-addr 11.11.11.61Swarm initialized: current node (tbw8qskwcijuu6166xhflzk66) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-46oa6zgggs71uxoy115257g4pdryckr8tsfy39yjbdy0ym2tyc-7dzz3mo0dryx40sg0s4ti2f7s 11.11.11.61:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2.在worker节点上加入集群

docker swarm join --token SWMTKN-1-46oa6zgggs71uxoy115257g4pdryckr8tsfy39yjbdy0ym2tyc-7dzz3mo0dryx40sg0s4ti2f7s 11.11.11.61:2377[root@centos181002 ~]# docker swarm join --token SWMTKN-1-46oa6zgggs71uxoy115257g4pdryckr8tsfy39yjbdy0ym2tyc-7dzz3mo0dryx40sg0s4ti2f7s 11.11.11.61:2377This node joined a swarm as a worker.

3.管理命令

#### 查看swarm的当前状态(所有节点可执行)
docker info#### 查看有关节点的信息(manager)
docker node ls#### 在manager节点上运行以下命令以检索加入节点的join命令:
docker swarm join-token worker [--quiet]
docker swarm join-token manager [--quiet]--quiet     只输出token根据token的不同,我们来区分加入集群的是manager节点还是普通的节点。

第二步:部署服务

1.新建服务

docker service create --replicas 3 -p 80:80 --name nginx nginxreplicas    运行3个副本

2.查看服务

## 查看当前 Swarm 集群运行的服务。
docker service ls[root@centos181001 ~]# docker service lsID                  NAME                MODE                REPLICAS            IMAGE               PORTSz58wbfjpzdix        nginx               replicated          3/3                 nginx:latest        *:80->80/tcp## 查看某个服务的详情
docker service ps nginx[root@centos181001 ~]# docker service ps nginxID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                    ERROR               PORTSk7q0gulkghaj        nginx.1             nginx:latest        centos181002        Running             Running less than a second ago                       xngufw4tyjik        nginx.2             nginx:latest        centos181003        Running             Running 3 minutes ago                                nbst7q6qmiyw        nginx.3             nginx:latest        centos181001        Running             Running 3 minutes ago## 查看某个服务的日志
docker service logs nginx -f-f      滚动输出

3.服务增容和缩容

docker service scale nginx=5
docker service scale nginx=2

4.删除服务

docker service rm nginx

Docker系列之五:Docker 三剑客之 Docker Swarm相关推荐

  1. Docker系列之五:Volume 卷的使用——以Redis为例

    系列链接 Docker系列之一:Docker介绍及在Ubuntu上安装 Docker系列之二:Docker 入门 Docker系列之三:使用Docker镜像和仓库 Docker系列之四:Dockerf ...

  2. Docker系列(二十三)——Docker实例五Docker安装MongoDB实例

    < Docker实例三Docker安装MongoDB实例 > 前言 在前面一篇文章种,完成了 < Docker安装MySQL实例 >,本篇将继续镜像安装教程,并完成Docker ...

  3. Docker系列(二十一)——Docker实例三Docker安装Tomcat实例

    < Docker实例三Docker安装Tomcat实例 > 前言 在前面一篇文章种,完成了 < Docker安装Nginx实例 >,本篇将继续镜像安装教程,并完成Docker安 ...

  4. docker(6)容器的三剑客:docker machine、docker-compose、docker Swarm

    文章目录 一.docker machine 1.在已经安装docker的目标主机部署 1)server11作为管理端,创建machine 2)server12上已经安装docker 3)免密 4)创建 ...

  5. Docker系列教程01-Centos7安装新版Docker教程(10步)

    最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...

  6. Docker系列(二):Docker安装

    虽然Docker官方推荐将docker运行在Ubuntu系统上,但是因为在生产环境中大部分用的还是CentOS(或者Redhat),所以这里也仅记录在CentOS上安装Docker的方法. Docke ...

  7. Docker系列器十二:docker swarm三节点创建一个wordpress

    1,现在manager创建一个网络: docker network create -d overlay demo 创建完成后,在node上没有显示. [root@docker-host ~]# doc ...

  8. Docker系列 一. CentOS上安装Docker

    1.环境&工具: 阿里云轻量级服务器.Centos7系统.FinalShell(其他连接客户端也可以) 2.步骤: 2.1 安装docker 2.1.1 以root身份登录服务器 2.1.2查 ...

  9. Docker系列(02)之docker镜像加速器

    默认情况下,将在docker hub(https://hub.docker.com)上下载docker镜像,这样太慢,所以一般会配置镜像加速器 常用的镜像加速器 USTC:中科大镜像加速器(https ...

最新文章

  1. 使用PCAST检测散度以比较GPU和CPU结果
  2. Android Material各种颜色设置
  3. 在wdos系统下搭建Dns服务器
  4. django-oscar页面出现Error 10002 - Security header is not valid
  5. ESXI5.1 数据备份与恢复
  6. 【敏捷开发每日一贴】测试驱动开发
  7. Verilog基础语法(一)
  8. matlab生成浮雕灰度图,将照片做成浮雕灰度图
  9. Azido-TAT,大环化合物,双功能螯合剂的性质
  10. 动态规划之二项式系数
  11. 2022采用Uni-app开发的多端圈子社区论坛系统
  12. 从制造到智造,用友U9 cloud2022成为制造业专精特新高效增长新引擎
  13. python将txt坐标批量打印到原图上
  14. 【HarmonyOS HiSpark Wi-Fi IoT HarmonyOS开发板】初探
  15. Android 自定义TabLayout
  16. 计算机操作员三级对职称有用吗,辛苦评定的职称,退休之后就没用了?其实还有三个作用你知道吗?...
  17. 在校大学生如何办理护照及港澳通行证?
  18. 通过软链接mklink共享node_modules
  19. C++ 中头文件(.h)和源文件(.cc)的写法简述
  20. 密集场景下的行人跟踪替代算法,头部跟踪算法 | CVPR 2021

热门文章

  1. 使用a标签下载文件而不是直接打开
  2. 互联网医院系统软件开发|互联网医院管理系统开发的好处
  3. 截部分陈宏对用线段树解矩形并的轮廓(picture 问题的深入讨论)
  4. css打印适应纸张_CSS print 样式 css控制打印样式 分页 页面大小
  5. HDU6130 Kolakoski
  6. 快速理解论文主旨框架:论文十问法
  7. 使用css设置div块实现阴影呈现3d效果
  8. 销量反弹,高管离职,苹果真的要改变高定价策略了?
  9. 他人的数据挖掘面试题-经验
  10. 清空数据库所有表中的数据