docker 学习笔记——第十集(集群管理工具 swarm)

Swarm 是 Docker 引擎内置(原生)的集群管理和编排工具

学习 swarm 一定要理解的几个重要概念

  • 节点
  • 服务
  • 任务

节点

一台物理或云主机加入 docker 集群,那么这台主机就是一个节点。

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

管理节点用于集群的管理,一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader。

工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。

管理节点默认也作为工作节点。你也可以通过配置让工作节点只进行任务调度。

Docker 官网的这张图片形象的展示了集群中管理节点与工作节点的关系。

管理节点与工作节点的关系

任务和服务

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。任务包含一个 Docker 容器和在容器中运行的命令。

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

  • replicated services(副本模式) 按照一定规则在各个工作节点上运行指定个数的任务。
  • global services(全局模式) 每个工作节点上运行一个任务

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

swarm 集群基本操作

  • 三台安装了 Docker 的主机,各主机间可以通信。
  • Docker 版本必须大于 1.12
  • 需要打开 tcp 2377 端口、tcp/udp 7946 端口、udp 4789 端口
  • 选一台主机作为管理节点,获取其 ip 地址
docker-machine

Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker。我们还可以通过 docker-machine 命令来管理这些虚拟机和 Docker。

安装 docker-machine
  1. 首先下载可执行文件 https://github.com/docker/machine/releases
  2. 将下载好的文件移动到 /usr/local/bin/docker-machine目录下并改名为 docker-machine
  3. 执行 sudo chmod +x /usr/local/bin/docker-machine命令为其添加可执行权限
  4. 执行如下命令,验证是否安装成功
$ docker-machine -v
docker-machine version 0.16.1, build cce350d7
初始化集群

第一步:如下命令创建 一个 Docker 主机作为管理节点。

$ docker-machine create -d virtualbox manager

由于众所周知的原因下载 boot2docker 特别慢,我们通过 boot2docker 项目页面直接下载该文件,然后将该文件移动到该 /Users/用户名/.docker/machine/cache目录下。最后重新执行创建的命令就可以了

第二步:在管理节点上初始化一个 swarm 集群

// ssh 到虚拟机中
$ docker-machine ssh manager

// 初始化 swarm 集群,并指定管理节点 ip 地址
docker@manager:~$ docker swarm init --advertise-addr 192.168.99.100
Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
    192.168.99.100:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

执行 docker swarm init 命令的节点自动成为管理节点。

第三步:创建工作节点,并加入 swarm 集群

worker 1

$ docker-machine create -d virtualbox worker1

$ docker-machine ssh worker1

// 工作节点初始化集群的时候会自动给出该命令。
docker@worker1:~$ docker swarm join \
    --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
    192.168.99.100:2377

This node joined a swarm as a worker.

通过该 docker swarm join-token worker命令获取加入集群的命令

worker2

$ docker-machine create -d virtualbox worker2

$ docker-machine ssh worker2

docker@worker1:~$ docker swarm join \
    --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
    192.168.99.100:2377

This node joined a swarm as a worker.

第四步:查看节点状态

// 该命令只能在管理节点使用
$ docker node ls

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
jnn6cji3hy22ninkymqxer49q *   manager             Ready               Active              Leader              19.03.12
r5sce06gn9351jvotf6xp1r53     worker1             Ready               Active                                  19.03.12
ssdfsdfs2df32dfk34dc3498      worker1             Ready               Active                                  19.03.12

Docker 引擎通过主机名自动为节点命名

MANAGER 列标识群中的管理器节点。Leader 表示管理节点,空表示工作节点

部署一个服务
$ docker service create --replicas 1 --name helloworld busybox ping baidu.com

wo27l49vowb7reote7apzqn8d
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged
  • –preplicas 1 指定副本个数为 1 个(即在集群中启动一个容器运行)
  • –name 指定服务名称为 helloworld
  • busybox 指定镜像为 busybox
  • ping baidu.com 指定运行的命令
查看当前运行的服务
$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
wo27l49vowb7        helloworld          replicated          1/1                 busybox:latesttcp
查看服务详情
$ docker service inspect --pretty helloworld

ID:		wo27l49vowb7reote7apzqn8d
Name:		helloworld
Service Mode:	Replicated
 Replicas:	1
Placement:
UpdateConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Pa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值