Files
DDDMicroFrontend/doc/DockerSwarm.md
2025-09-29 05:07:42 +08:00

6.9 KiB
Raw Blame History

以下是完整的 Docker Swarm 命令大全:

1. Swarm 集群管理命令

初始化和管理 Swarm

# 初始化 Swarm 集群
docker swarm init --advertise-addr <IP地址>

# 初始化并指定默认地址池
docker swarm init --advertise-addr <IP地址> --default-addr-pool <网段> --default-addr-pool-mask-length <掩码>

# 查看 Swarm 集群信息
docker swarm inspect

# 查看 Swarm 加入令牌
docker swarm join-token worker      # 工作节点令牌
docker swarm join-token manager     # 管理节点令牌

# 更新令牌
docker swarm join-token --rotate worker
docker swarm join-token --rotate manager

# 离开 Swarm 集群
docker swarm leave                  # 工作节点离开
docker swarm leave --force          # 管理节点强制离开

# 解锁 Swarm 集群
docker swarm unlock
docker swarm unlock-key             # 查看解锁密钥
docker swarm unlock-key --rotate    # 更新解锁密钥

2. 节点管理命令

节点操作

# 查看所有节点
docker node ls

# 查看节点详细信息
docker node inspect <节点名称或ID>

# 查看节点上的任务
docker node ps <节点名称或ID>

# 提升节点为管理节点
docker node promote <节点名称或ID>

# 降级节点为工作节点
docker node demote <节点名称或ID>

# 移除节点
docker node rm <节点名称或ID>

# 更新节点
docker node update --availability active <节点名称或ID>    # 激活节点
docker node update --availability drain <节点名称或ID>     # 排空节点(停止任务)
docker node update --availability pause <节点名称或ID>     # 暂停节点

# 添加标签到节点
docker node update --label-add <key>=<value> <节点名称或ID>

# 移除节点标签
docker node update --label-rm <key> <节点名称或ID>

3. 服务管理命令

服务创建和操作

# 创建服务
docker service create --name <服务名> <镜像>

# 创建服务(完整参数示例)
docker service create \
  --name nginx \
  --replicas 3 \
  --publish published=80,target=80 \
  --mount type=bind,source=/host/path,target=/container/path \
  --env ENV_VAR=value \
  --constraint 'node.role==worker' \
  --limit-cpu 0.5 \
  --limit-memory 512M \
  nginx:latest

# 查看所有服务
docker service ls

# 查看服务详细信息
docker service inspect <服务名>

# 查看服务任务状态
docker service ps <服务名>

# 查看服务日志
docker service logs <服务名>
docker service logs --follow <服务名>    # 实时日志
docker service logs --tail 100 <服务名>  # 最后100行日志

# 扩展服务副本数
docker service scale <服务名>=<数量>

# 更新服务
docker service update --image <新镜像> <服务名>
docker service update --replicas <数量> <服务名>
docker service update --force <服务名>    # 强制更新(重新部署)

# 删除服务
docker service rm <服务名>

# 回滚服务到上次更新
docker service rollback <服务名>

服务更新参数

# 镜像相关
--image <镜像:标签>          # 更新镜像
--rollback                   # 回滚到上一版本

# 副本和部署策略
--replicas <数量>            # 设置副本数量
--update-parallelism <数量>   # 同时更新的任务数
--update-delay <时间>        # 更新间隔如10s
--update-failure-action <动作> # 失败动作pause/continue
--update-monitor <时间>      # 监控时间如30s
--update-order <顺序>        # 更新顺序start-first/stop-first

# 资源限制
--limit-cpu <值>             # CPU限制如0.5
--limit-memory <值>          # 内存限制如512M
--reserve-cpu <值>           # 保留CPU
--reserve-memory <值>        # 保留内存

# 网络和端口
--publish-add <端口映射>     # 添加端口映射
--publish-rm <端口映射>      # 移除端口映射
--network-add <网络>         # 添加网络
--network-rm <网络>          # 移除网络

# 约束和标签
--constraint-add <约束>      # 添加约束
--constraint-rm <约束>       # 移除约束
--label-add <标签>           # 添加标签
--label-rm <标签>            # 移除标签

# 环境变量
--env-add <变量>             # 添加环境变量
--env-rm <变量>              # 移除环境变量
--secret-add <密钥>          # 添加密钥
--secret-rm <密钥>           # 移除密钥

4. 栈Stack管理命令

使用 Docker Compose 文件部署

# 部署栈
docker stack deploy -c docker-compose.yml <栈名>

# 查看所有栈
docker stack ls

# 查看栈中的服务
docker stack services <栈名>

# 查看栈中服务的任务
docker stack ps <栈名>

# 删除栈
docker stack rm <栈名>

5. 网络管理命令

Swarm 网络操作

# 查看网络
docker network ls

# 创建覆盖网络
docker network create --driver overlay --attachable <网络名>

# 查看网络详细信息
docker network inspect <网络名>

# 删除网络
docker network rm <网络名>

6. 配置和密钥管理

配置管理

# 创建配置
docker config create <配置名> <文件路径>

# 查看配置列表
docker config ls

# 查看配置内容
docker config inspect <配置名>

# 删除配置
docker config rm <配置名>

密钥管理

# 创建密钥
docker secret create <密钥名> <文件路径>
echo "secret content" | docker secret create <密钥名> -

# 查看密钥列表
docker secret ls

# 查看密钥内容
docker secret inspect <密钥名>

# 删除密钥
docker secret rm <密钥名>

7. 常用查询和监控命令

集群状态查询

# 查看集群系统信息
docker system df              # 磁盘使用情况
docker system events          # 系统事件
docker system info            # 系统信息

# 监控资源使用
docker stats                  # 实时资源统计
docker stats --no-stream      # 一次性资源统计

# 查看版本信息
docker version

8. 高级部署配置示例

使用 Docker Compose 文件

# docker-compose.yml
version: '3.8'

services:
  web:
    image: nginx:latest
    deploy:
      replicas: 3
      update_config:
        parallelism: 2
        delay: 10s
        failure_action: rollback
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          cpus: '0.1'
          memory: 128M
      placement:
        constraints:
          - node.role == worker
    ports:
      - "80:80"
    networks:
      - webnet

networks:
  webnet:
    driver: overlay
    attachable: true

部署栈

docker stack deploy -c docker-compose.yml myapp

9. 故障排查命令

排查和调试

# 查看节点连接状态
docker node ls

# 查看服务详细状态
docker service inspect --pretty <服务名>

# 查看任务日志
docker service logs --tail 50 <服务名>

# 在节点上执行命令
docker exec -it <容器ID> /bin/bash

# 查看 Swarm 集群事件
docker events