docker-swarm搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Docker Swarm 是 Docker 原生的一个集群工具,它可以把多个 Docker 主机转化为单一的虚拟 Docker 主机。


一、swarm及特点是什么?

  • Docker Swarm 是 Docker原生的一个集群工具,安装搭建由于是原生,所有无需下载安装其他第三方软件工具进行支持,因此搭建方便快捷。
  • 它可以把多个 Docker 主机转化为单一的虚拟 Docker主机,意思简单理解为swarm可以管理并操作多台主机的容器像操作单台主机的容器一样的简单。把主机称为节点,节点分为manager节点和worker节点,并且可以通过一台manager节点操控自身和其他所有worker节点的容器,可以非常方便的管理,同时swarm提供了集群可用性机制。

二、安装步骤

1.准备服务器

  • 这里准备两台centos7/8服务器

    服务器1 : 192.168.0.87
    服务器2 : 192.168.0.102

  • 对于swarm,每台服务器作为节点node,分为manager和worker节点,manager用于管理所有的节点以及所有的容器,worker用于一个或者多个容器来运行应用,其实manager同样可以用来运行应用,其实swarm使用比较灵活,根据自己的实际情况来决定,这里使用2台服务器进行搭建。

  • 服务器1 : 192.168.0.87 --作为manager和worker
    服务器2 : 192.168.0.102-作为worker

2.安装docker 和 swarm 搭建(192.168.0.87)

  • 首先安装docker

    #安装
    yum install -y yum-utils device-mapper-persistent-data
    yum-config-manager --add-repo  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install docker-ce-18.06.1*
    
    #关闭防火墙
    systemctl stop firewalld
    #禁用防火墙
    systemctl disable firewalld
    
    #启动docker服务
    service docker start 
    #开机自启
    chkconfig docker on 
    
    
  • 搭建swarm,由于安装docker自带因此无需另外安装,直接开始

    #将192.168.0.87主机(本机)作为manager
    [root@ecs-bf92-0002 ~]# docker swarm init
    Swarm initialized: current node (swdt9g2tkz2muvfqy73mqis9f) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-5t55zue9sywh1qtghrr7sau7fokht6qc1212m8psu672ycdevg-cqraijau1518any7btqwicy74 192.168.0.87:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    
    #设置本主机在swarm中的节点名称“node1” ecs-bf92-0002为本机hostname
    [root@ecs-bf92-0002 ~]# docker node update --label-add tagName=node1 ecs-bf92-0002
    
  • 搭建overlay网络模式

    docker network create -d overlay --subnet=10.10.0.0/16 --gateway=10.10.0.1 --attachable=true xx_overlay
    

    overlay 网络模式为swarm下的不同主机的不同容器分配虚拟ip,同时可以让容器之间进行跨主机通信

3.安装docker 和 swarm 搭建(192.168.0.102)

  • 首先安装docker

    #安装
    yum install -y yum-utils device-mapper-persistent-data
    yum-config-manager --add-repo  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install docker-ce-18.06.1*
    
    #关闭防火墙
    systemctl stop firewalld
    #禁用防火墙
    systemctl disable firewalld
    
    #启动docker服务
    service docker start 
    #开机自启
    chkconfig docker on 
    
    
  • 搭建swarm

    [root@ecs-bf92-0001 ~]# docker swarm join --token SWMTKN-1-5t55zue9sywh1qtghrr7sau7fokht6qc1212m8psu672ycdevg-cqraijau1518any7btqwicy74 192.168.0.87:2377
    This node joined a swarm as a worker.
    [root@ecs-bf92-0001 ~]# 
    

    192.168.0.102作为worker节点,无需执行docker swarm init命令,根据192.168.0.87执行docker swarm init生成的docker swarm join --token SWMTKN-1-5t55zue9sywh1qtghrr7sau7fokht6qc1212m8psu672ycdevg-cqraijau1518any7btqwicy74 192.168.0.87:2377,执行后加入manger即可

  • 进入192.168.0.87 manager节点服务器中,设置节点名称,worker无法执行swarm命令

    #设置本主机在swarm中的节点名称“node2” ecs-bf92-0001为本机hostname
    [root@ecs-bf92-0002 ~]# docker node update --label-add tagName=node2 ecs-bf92-0001
    

4.swarm使用

  • 在manager查看节点状态

    [root@ecs-bf92-0002 ~]# docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    7lssva90bw7k9ic30gfovzupx     ecs-bf92-0001       Ready               Active                                  18.06.1-ce
    swdt9g2tkz2muvfqy73mqis9f *   ecs-bf92-0002       Ready               Active              Leader              18.06.1-ce
    [root@ecs-bf92-0002 ~]# 
    
    
  • 在manager中创建容器

    意思可以理解为在manager节点中可以在自身服务器中和其他任何worker节点的服务器环境中创建节点,如在192.168.0.87 和 192.168.0.102两个服务器中

    docker service create --network=xx_overlay \
    --log-driver="none" \
    --constraint 'node.labels.tagName == node1' \
    --mount type=bind,source=/docker/logs/xxx-proxy,target=/logs \
    --name="xxx-proxy" --host nacos:10.10.1.99 \
    -e "spring.profiles.active=prod" \
    registry.cn-shanghai.aliyuncs.com/xxxx/xxx-proxy:1.0.10-SNAPSHOT
    

    1.swarm 以 docker service 方式进行启动,与docker run 方式其实差不多,只是命令稍微有点区别
    2.–network 为上面创建的网络方式的名称
    3.–constraint ‘node.labels.tagName == node1’ 在manager节点中执行可以指定该容器安装在哪个节点上
    4.–host nacos:10.10.1.99 设置dns映射关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值