Docker--04 Docker Swarm

Docker swarm

1. Docker Swarm简介

  • 集群
  • 大型应用
  • 高性能、高效率、高可用
  • 无中心设计
  • 横向、纵向伸缩
  • 多主机网络
  • 服务发现
  • 负载均衡
  • 回滚更新

2. Swarm manager

  • 切换、加入、移除、维护节点
  • 最小的集群至少需要5个节点

3. Swarm work

  • 运行任务的节点
  • 托管容器管理

4. 集群及节点操作

# manager节点查看信息
docker node ls
# manager节点查看详细信息
docker node inspect  manager
# 将work1节点提权为manager节点
docker node promote worker1
# 将work1节点降权为普通节点
docker node demote worker1
查看节点进程
docker node ps manager

5. 服务管理

# 创建服务
docker service create --name web -p 8080:80 --constraint "node.role == worker" nginx
# 扩容 
docker service scale web=6
# 启动、管理、

# 查看服务列表
docker service ls
# 查看服务详情
docker service inspect  web --pretty

6. stack集群管理

  • docker-compose.yml

version: '3.3' 

# 第2部分,定义容器
services:
  web:  # 指定服务名称1
    image: nginx   # 指定镜像名称
    ports:    # 指定端口映射
      - "8080:80"
    deploy:
      mode: replicated
      replicas:6      # 可以常见6个副本
      restart_policy: # 重启策略
        condition: on-failure
        delay: 5s
        max_attempts: 3  # 最大尝试重启次数
      placement:
        constraint:
          - node.role == worker
  redis:       # 指定服务名称2
    image: "redis:alpine"
    
# 第3部分,声明要创建的全局数据卷
volumes:  # 声明要创建的全局数据卷

  • 启动服务
docker stack  deploy  --compose-file docker-compose.yml web

7. 项目部署脚本

version: '3.3' 

# 第2部分,定义容器
services:
  db:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    # 当运行容器失败后重启的策略
    restart: always   
    container_name: apitest-db
    volumes:
      # 宿主机:docker目录
      - dbdata:/var/lib/mysql  
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: dev01
    deploy:
      # 全局仅一个
      mode: global
      restart_policy: 
        condition: on-failure
        delay: 5s
        max_attempts: 3  
      placement:
        constraint:
          - node.role == manager
  app:
    # 指定容器的启动依赖
    depends_on: 
      - db
    image: zyanwei2011/apitest:v1.0
    container_name: apitest_d
    restart: always
    ports:
      - 5000:5000
    volumes:
      - mycode:/usr/src/app/dev01/
      - logs:/usr/src/app/logs/
    environment:
      FLASK_APP: run.py


# 第3部分,声明要创建的全局数据卷
volumes:  
  dbdata:
  mycode:
  logs:

猜你喜欢

转载自blog.csdn.net/qq_25672165/article/details/119325341