docker swarm

Docker Swarm概念与基本用法

Docker Swarm,主要包含以下概念

  • Swarm
  • Node
  • Stack
  • Service
  • Task
  • Load balancing

Swarm:计算机集群(cluster)在用Docker连接后的状态。docker swarm命令可以创建、加入、离开一个集群

Node:计算机节点,也可以认为是一个Docker节点,Node分为两类:Manager和Worker

Stack:一组Service,默认情况下,一个Stack共用一个Network,相互可访问,与其它Stack网络隔绝。docker stack命令可以方便地操作一个Stack,而不用一个一个地操作Service

Service:一类容器,Service有两种运行模式,一是replicated,指定一个Service运行容器的数量。二是global,在所有符合运行条件的Node上,都运行一个这类容器

Task:指运行一个容器的任务,是Swarm执行命令的最小单元

Load balancing:即负载均衡,也包含反向代理。Swarm使用的是Ingress形式的负载均衡,即访问每个节点的某个Published端口,都可自动代理到真正的服务。

Replicated Mode

services:
  some-serivce:
    ...
    deploy:
      mode: replicated
      replicas: 3

默认情况下,mode就是replicated,所以这行可以省略。默认replicas数目为1,代表这个Service只启动1个容器。这个模式,可以按需启动多个服务,Swarm会自动调节,有时一个Node会启动多个容器。

Global Mode

services:
  some-serivce:
    ...
    deploy:
      mode: global
      placement:
        ...

所有可部署的Node,都部署一个。通过placement,可以限定满足条件的Node,而避免在不合适的Node进行部署

#####初始化集群

docker swarm init --listen-addr 192.168.8.88:2377 
查看工作机加入集群的token
docker swarm join-token worker
查看集群
docker node ls
创建一个公用网络
docker network create --driver overlay --attachable=true platform
查看docker node 配置
docker node inspect [nodeName]
修改docker node配置
sudo docker node update [option] [nodeName]
设置节点Label

在Manager节点,可以对任意节点设置标签

docker node update $node_name --label-add main=true

$node_name就是要设置节点的ID或HOSTNAME。Label是键值对形式,main=true中的main就是键、true就是值。设置了Label以后,在Compose文件中就可以用placement中的constraints来对可用节点作出限制

services:
  some-serivce:
    ...
    deploy:
      placement:
        constraints:
          - node.labels.main == true

以上配置,让some-service仅在Label被设置为main=true的节点,才能使用。

启动、停止服务

docker stack deploy $stack_name -c docker-compose.yaml -c other.yaml ...

$stack_name是Stack名称。可以用-c指定多个docker-compose文件,也可在相同Stack下分批次deploy多个文件。这些YAML文件的写法,和原先用docker-compose命令执行的没有本质区别,只是多加了以下独特配置,并且会忽略一些Swarm场景下不支持的配置

需要停止Stack的所有服务时,可以执行以下命令

docker stack rm $stack_name

更新已运行服务的镜像

docker service update --image $image:$tag $service_name

Compose file version 3 reference | Docker Documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值