Docker Swarm 集群与编排镜像

准备

  • 一台Ubuntu电脑,两台Windows电脑
    10.0.1.97 — Linux系统主机名studyserver (manager-node)
    10.0.0.95 — Windows系统虚拟主机名army-worker1和army-worker2 (worker-node)
    10.0.0.97 — Windows系统虚拟主机名rommy-worker1和rommy-worker2 (worker-node)
  • swarm主机间通信需要开放以下端口
    -TCP port 2377为集群管理通信
    -TCP and UDP port 7946 为节点间通信
    -UDP port 4789 为网络间流量
    方便起见,直接关闭两台主机的防火墙
    systemctl stop firewalld.service 停止firewall
    systemctl disable firewalld.service 禁止firewall开机启动

使用Swarm

  1. 创建一个swarm集群
    docker swarm init --advertise-addr 10.0.1.97
    --advertise-addr 指定IP,其他节点通过这个IP找到管理节点

    这样就已经创建好了一个swarm集群,并且自动将当前主机加入集群,成为manager节点,大部分操作都必须在manager节点上执行
  1. 加入集群
    windows系统创建虚拟机, 依赖:


    我们在10.0.0.95上执行

    docker swarm join --token SWMTKN-1-1h1edgale8r4833jm72f6p1iavp02z4jldeecdwd8r8jujalb7-9qymj7cgpcj8077wh9ljjwkui 10.0.1.97:2377就可以加入该集群,并且成为一个工作节点

    如果忘了命令,可以在管理节点执行docker swarm join-token worker 同样会显示这条命令

  2. 查看节点,在管理节点执行
    docker node ls 可以查看所有节点

    Leader就表明了哪个节点是管理节点

创建网络

为了在集群中实现跨主机通信,我们需要创建一个overlay网络,与创建bridge网络类似

-d 指定网络模式为overlay
--subnet 可以指定网段
-gateway 指定网关

 

Stack部署

Stack就是Service的集合
类似docker-compose.yml我们也可以编写stack.yml统一创建服务

新建stack.yml

部署stack

部署完成

执行后可以看到,成功创建了3个服务

搭建Portainer

 

您只需要使用浏览器访问运行portainer的Docker引擎的9000端口。

http://10.0.1.97:9000