319 lines
6.9 KiB
Markdown
319 lines
6.9 KiB
Markdown
以下是完整的 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
|
||
```
|