官方文档: https://docs.docker.com/engine/swarm/swarm-tutorial/
工作模式
搭建集群
docker swarm --help
# 查看私网IP地址
ip addr
docker swarm init --advertise-addr 192.168.98.224
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-2izj4yg08taobo19tjb9ci3r0w3lwkxxq8gvwx0d71zi71gize-8c4desxvd2mxt14zwv5sjneel 192.168.98.224:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
# 初始化主节点 后面可以加入主节点或者工作节点
docker swarm init
# 加入一个节点
docker swarm join
# 创建manager节点命令
docker swarm join-token manager
# 创建worker节点命令
docker swarm join-token worker
# 查看节点 只有manager节点可以使用该命令
docker node ls
# 离开集群
docker swarm leave
Raft一致性协议
保证大多数节点存活才可以使用
Swarm集群弹性创建服务
docker run : 容器启动 不具备扩缩容
docker-compose up : 启动一个项目、单机
dockck swarm : 集群, docker service .分布在不同主机上
# 启动服务
docker service create -p 8888:80 --name swarm-nginx nginx
# 查看服务
docker service ps swarm-nginx
docker service ls
docker service inspect swarm-nginx
# 扩容
docker service update --replicas 3 swarm-nginx
# 或者使用 scale 扩容
docker servcie scale swarm-nginx=3
# 移除服务
docker service rm swarm-nginx
集群中任意的节点都可以访问,服务可以有多个副本动态扩缩容实现高可用
概念总结
-
Swarm
集群的管理和编号;docker可以初始化一个swarm集群,其他节点可以加入(管理者、工作者) -
Node
就是一个Dokcer节点,多个节点组成一个网络集群。 -
Service
任务,可以在管理节点或者工作节点运行。提供用户访问 -
Task
容器内的命令 细节任务
Docker Swarm
Service
docker service create流程
服务副本与全局服务
调整Service以什么方式运行
# 默认在工作节点创建服务
docker service create --mode replicated --name mytomcat tomcat:7
docker service create --mode global --name mytomcat tomcat:7
# 场景:日志收集、服务监控、状态性能
每一个节点都有自己的日志收集器,过滤日志后把所有日志最终传给日志中心
扩展
网络模式: PublishMode: ingress
模式 | |
---|---|
Overlay | 跨机器互通 网络变成一个整体 |
ingress | 特殊的Overlay网络 具有负载均衡功能 |
docker network inspect ingress
Docker Stack
# 单机
docker-compose up -d wordpress.yml
# 集群
docker stack deploy wordpress.yml
Docker Secret
配置密码、证书