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: