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

319 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

以下是完整的 Docker Swarm 命令大全:
## 1. Swarm 集群管理命令
### 初始化和管理 Swarm
```bash
# 初始化 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. 节点管理命令
### 节点操作
```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 <key>=<value> <节点名称或ID>
# 移除节点标签
docker node update --label-rm <key> <节点名称或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
```