Docker多节点集群管理主要通过Docker Swarm或Kubernete实现,以下以Docker Swarm为例进行说明。
# 在主节点上执行
docker swarm init --advertise-addr <MANAGER-IP>
# 在Manager节点获取加入命令
docker swarm join-token worker
# 在Worker节点执行输出的命令
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
# 在Manager节点获取manager加入命令
docker swarm join-token manager
# 在新Manager节点执行
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
docker node ls
docker node promote <NODE-ID> # 提升为manager
docker node demote <NODE-ID> # 降级为worker
docker node update --availability drain <NODE-ID> # 排空节点
docker node update --availability active <NODE-ID> # 恢复节点
docker service create --name web --replicas 3 -p 80:80 nginx
docker service scale web=5 # 扩容到5个副本
docker service scale web=2 # 缩容到2个副本
docker service update --image nginx:1.19 --update-parallelism 2 --update-delay 10s web
docker service rollback web
# docker-compose.yml示例
version: '3.8'
services:
web:
image: nginx
ports:
- "80:80"
deploy:
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 512M
restart_policy:
condition: on-failure
部署Stack:
docker stack deploy -c docker-compose.yml myapp
# 给节点添加标签
docker node update --label-add region=east <NODE-ID>
# 部署时使用约束
docker service create --name db --constraint 'node.labels.region == east' redis
docker service ps <SERVICE-NAME> # 查看服务状态
docker service logs <SERVICE-NAME> # 查看服务日志
生产环境建议:
安全建议:
网络优化:
通过以上方法,您可以有效地管理和扩展Docker多节点集群,实现容器化应用的高可用和弹性伸缩。