环境:centos7
一台管理节点(manager),两台工作节点(worker)。
192.168.10.50 管理节点IP
192.168.10.51 工作节点IP
192.168.10.55 工作节点IP

基础环境配置

因为通过yum安装的docker是比较旧的版本,所以需要手动安装最新的docker。
安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新并安装docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

开启docker服务和设置开机自启动

sudo service docker start
sudo systemctl enable docker

安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#要安装全其他版本需替换1.29.2为相应版本号
 sudo chmod +x /usr/local/bin/docker-compose #添加docker-compose可执行权限

关闭selinux和防火墙

systemctl disable firewalld #关闭防火墙
vi /etc/selinux/config #打开selinux的设置文件
#将 SELINUX=enforcing 改为 SELINUX=disabled

设置hostname

hostnamectl set-hostname swarm.master #管理服务器
hostnamectl set-hostname swarm.node01 #工作服务器
hostnamectl set-hostname swarm.node10 #工作服务器

设置host相互解析,vi /etc/hosts ,然后填入以下内容

192.168.10.50 swarm.master
192.168.10.51 swarm.node01
192.168.10.55 swarm.node10

开始配置docker swarm

初始化swarm

docker swarm init --advertise-addr 192.168.10.50 #在管理节点执行
#如果服务器有多个IP,必须使用 –advertise-addr 指定 IP
#如果只有一个IP 执行docker swarm init亦可

然后复制出现的docker swarm join --token XXXXX, 并在工作节点执行, 看到 This node joined a swarm as a worker. 说明加入成功。

也可以用以下命令获取加入集群的token

docker swarm join-token worker 

在管理节点查看节点信息

docker node ls

部署可视化面板: Portainer.io

在管理节点执行,下载 portainer-agent-stack.yml文件

curl -L https://downloads.portainer.io/portainer-agent-stack.yml \
    -o portainer-agent-stack.yml

编辑下载下来的 portainer-agent-stack.yml 文件,根据需要更改,以下是我下载下来的内容


version: '3.2'

services:
  agent:
    image: portainer/agent:2.11.0
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ce:2.11.0
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"  #https端口
      - "9000:9000"  #http端口
      - "8000:8000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

默认情况下,Portainer 将通过 port 公开 UI,9443并通过 port 公开 TCP 隧道服务器8000。后者是可选的,仅当您计划将边缘计算功能与边缘代理一起使用时才需要

部署

docker stack deploy -c portainer-agent-stack.yml portainer

等待一段时间后执行

docker ps


##########执行完后出现以下内容就部署完成了.
89bf67a2aa95   portainer/portainer-ce:2.11.0   "/portainer -H tcp:/…"   About a minute ago   Up About a minute   8000/tcp, 9000/tcp, 9443/tcp   portainer_portainer.1.1i61c1wbm3pvw3sufincsdval
e22b9bbee4ff   portainer/agent:2.11.0          "./agent"                2 minutes ago        Up 2 minutes                                       portainer_agent.od00bsnpw6iok5t9v37fk7v1c.m781waq3muizv7u11g9g48kx0

通过主服务器IP+端口访问 Portainer ,默认9443和9000端口