docker swarm 搭建二

TwoAdmin 2025-10-6 76 10/6

部署docker swarm

#时区
sudo timedatectl set-timezone Asia/Shanghai

timedatectl status
#启用网络时间同步
sudo timedatectl set-ntp true

初始化 Swarm 模式(因为您使用了 deploy 配置)

bash
# 初始化 Docker Swarm
docker swarm init

# 如果显示已初始化,可以查看状态
docker node ls

创建必要的网络

# 创建 overlay 网络(如果不存在)
docker network create --driver overlay --attachable app-network

# 查看网络
docker network ls

# 1. 先构建所有镜像
echo "=== 构建 Python 镜像 ==="
cd /data/app/python
docker build -t myapp-python:latest .

echo "=== 构建 Vue 镜像 ==="
cd /data/app/vue
VERSION=$(date +%Y%m%d_%H%M%S)
docker build -t myapp-vue:${VERSION} .

echo "=== 构建 Nginx 镜像 ==="
cd /data/nginx
docker build -t myapp-nginx:latest .

部署应用堆栈






# 进入 compose 文件所在目录
cd /data

# 部署堆栈(堆栈名可以自定义,如 myapp)
ex port $(grep -v '^#' .env | xargs)
docker stack deploy -c docker-compose.yml myapp

#滚动更新
清理
#docker stack rm myapp #在没部署成功可以清理掉
# 检查是否完全清理
docker service ls | grep myapp
docker ps | grep myapp

export $(grep -v '^#' .env | xargs)
docker stack deploy -c docker-compose.yml myapp 
步骤4:查看部署状态

# 查看所有服务
docker service ls

# 查看具体服务详情
docker service ps myapp_python-app
docker service ps myapp_redis
docker service ps myapp_vue-app
docker service ps myapp_nginx

# 查看容器状态
docker ps

# 查看日志
docker service logs myapp_python-app -f



docker 镜像

# 创建或修改 Docker daemon 配置
sudo mkdir -p /etc/docker


# 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 检查配置是否生效
docker info | grep -A 5 "Registry Mirrors"




#回滚机制


# 自动回滚(配置在 update_config 中)
failure_action: rollback

# 手动回滚到上一版本
docker service update --rollback myapp_python-app

# 回滚到特定版本
docker service update --image myapp-python:20251203_150000 myapp_python-app


查看日志
docker service logs myapp_python-app --tail 50

docker service logs myapp_vue-app --tail 50

docker service logs myapp_nginx --tail 50

完整的多服务器部署流程

# 1. 初始化Swarm集群(管理节点)
docker swarm init --advertise-addr 192.168.1.10

查看加入令牌

#2. 查看管理节点令牌
docker swarm join-token manager

#3. 查看工作节点令牌
docker swarm join-token worker

# 4. 添加工作节点(每台服务器)
docker swarm join --token SWMTKN-xxx 192.168.1.10:2377
#5.添加管理节点(Manager,可选)
docker swarm join --token <MANAGER_TOKEN> <MANAGER_IP>:2377

# 6. 创建overlay网络(跨节点通信)
docker network create -d overlay --attachable app-network



# 7. 部署应用(使用stack)
docker stack deploy -c docker-compose.yml myapp

# 8. 查看分布式状态
docker stack ps myapp          # 查看所有服务分布
docker service ls             # 查看服务状态
docker node ps                # 查看节点运行情况

节点管理

#9. 提升节点为 manager
docker node promote <NODE_NAME>

#10. 降级节点为 worker
docker node demote <NODE_NAME>

#11.节点维护模式
docker node update --availability drain <NODE_NAME>
docker node update --availability active <NODE_NAME>

#12. 更新服务配置
docker service update --force myapp_nginx
#13.清理
docker stack rm myapp
- THE END -
Tag:

TwoAdmin

12月24日15:04

最后修改:2025年12月24日
0

非特殊说明,本博所有文章均为博主原创。