以下是完整的 Docker Swarm 命令大全: ## 1. Swarm 集群管理命令 ### 初始化和管理 Swarm ```bash # 初始化 Swarm 集群 docker swarm init --advertise-addr # 初始化并指定默认地址池 docker swarm init --advertise-addr --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. 节点管理命令 ### 节点操作 ```bash # 查看所有节点 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 = <节点名称或ID> # 移除节点标签 docker node update --label-rm <节点名称或ID> ``` ## 3. 服务管理命令 ### 服务创建和操作 ```bash # 创建服务 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 <服务名> ``` ### 服务更新参数 ```bash # 镜像相关 --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 文件部署 ```bash # 部署栈 docker stack deploy -c docker-compose.yml <栈名> # 查看所有栈 docker stack ls # 查看栈中的服务 docker stack services <栈名> # 查看栈中服务的任务 docker stack ps <栈名> # 删除栈 docker stack rm <栈名> ``` ## 5. 网络管理命令 ### Swarm 网络操作 ```bash # 查看网络 docker network ls # 创建覆盖网络 docker network create --driver overlay --attachable <网络名> # 查看网络详细信息 docker network inspect <网络名> # 删除网络 docker network rm <网络名> ``` ## 6. 配置和密钥管理 ### 配置管理 ```bash # 创建配置 docker config create <配置名> <文件路径> # 查看配置列表 docker config ls # 查看配置内容 docker config inspect <配置名> # 删除配置 docker config rm <配置名> ``` ### 密钥管理 ```bash # 创建密钥 docker secret create <密钥名> <文件路径> echo "secret content" | docker secret create <密钥名> - # 查看密钥列表 docker secret ls # 查看密钥内容 docker secret inspect <密钥名> # 删除密钥 docker secret rm <密钥名> ``` ## 7. 常用查询和监控命令 ### 集群状态查询 ```bash # 查看集群系统信息 docker system df # 磁盘使用情况 docker system events # 系统事件 docker system info # 系统信息 # 监控资源使用 docker stats # 实时资源统计 docker stats --no-stream # 一次性资源统计 # 查看版本信息 docker version ``` ## 8. 高级部署配置示例 ### 使用 Docker Compose 文件 ```yaml # 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 ``` ### 部署栈 ```bash docker stack deploy -c docker-compose.yml myapp ``` ## 9. 故障排查命令 ### 排查和调试 ```bash # 查看节点连接状态 docker node ls # 查看服务详细状态 docker service inspect --pretty <服务名> # 查看任务日志 docker service logs --tail 50 <服务名> # 在节点上执行命令 docker exec -it <容器ID> /bin/bash # 查看 Swarm 集群事件 docker events ```