1、本节介绍一下stack的操作
2、环境介绍
| 主机名 | IP地址 | 节点类别 | 
| kub01 | 172.16.172.71 | manager | 
| kub02 | 172.16.172.72 | worker | 
| kub03 | 172.16.172.73 | worker | 
3、启动环境
#在kub01初始化swarm,会输出一个token
sudo docker swarm init --advertise-addr 172.16.172.71
#kub02和kub03加入该swarm
sudo docker swarm join \
    --token SWMTKN-1-249jjodetz6acnl0mrvotp3ifl4jnd2s53buweoasfedx695jm-cdjp3v2jjq2ndfxlv8o2g49n9 \
    172.16.172.71:2377
#查看节点信息
sudo docker node ls
4、新建docker-compose.yml文件
version: "3"
services:
  web:
    image: myserver:1.0.0
    deploy:
      replicas: 10
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 64M
    ports:
      - "8080:8080"
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8090:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
  redis:
    image: redis:3.2
    ports:
      - "6379:6379"
    volumes:
      - /home/hiup/dockervisual/data:/data
    deploy:
      placement:
        constraints: [node.role == manager]
    command: redis-server --appendonly yes
    networks:
      - webnet
networks:
  webnet:
5、需要确认的信息
要保证三个镜像都是可用的
要保证redis的数据文件夹是可用的
三个服务的networks是一样的
6、启用stack
#启动stack sudo docker stack deploy -c docker-compose.yml mystack01 #查看stack sudo docker stack ls #查看服务 sudo docker service ls
7、用浏览器打开本地8080端口,可以在visualizer看到各容器的状态
8、停止stack
停止 sudo docker stack rm mystack01
9、节点退出swarm
#kub02和kub03退出swarm sudo docker swarm leave #kub01退出swarm,由于最后一个管理node也退出了,swarm结束 sudo docker swarm leave --force