# Swarm 基础命令



### 常用命令

```bash
docker service create --replicas 1 -p port:port --name <name> <images>    # 拉取 <image> 镜像， 名字是 <name>,端口映射， 副本数为 1 的服务
docker service scale xxx                        # 服务扩容|收缩
docker service rm xxx                           # 删除服务
docker service logs xxx                         # 查看服务日志
docker node ls                                  # 查询集群节点状态
docker node promote xxx                         # 节点加权
docker node demote xxx                          # 节点降权
docker node rm xxx                              # 删除节点
docker node inspect xxx                         # 查看节点标签
docker node update --label-add role=web xxx     # 节点加标签
docker node update --label-rm role xxx          # 删除标签
```

### 配置运行时环境

为容器配置以下运行环境选项：

* 使用--env配置环境变量
* 使用--workdir配置容器工作目录
* 使用--user配置用户名或者uid

```
docker service create --name helloworld --env myvar=myvalue --workdir /tmp --user my_user alpine ping baidu.com
```

### 服务部署条件约束

> 某个节点打上标签后，可以把指定的服务运行在这个标签节点上

```bash
docker node update --label-add role=web swarm-01
docker service create \
  --name nginx \
  --constraint 'node.labels.role == web' \
  nginx
```

### 打上污点

> 打上污点后，节点不可调度使用

```bash
docker node  update --availability drain xxx
docker node  update --availability Active xxx
docker node  update --availability Pause xxx
docker node  update --help
```

### 节点状态说明

* Leader 主管理节点
* Reachable 副管理节点，主不可用，通过选举，副升级为主
* Unavailable 节点不可用

### 节点AVAILABILITY列说明

* Active 意味着调度程序可以将任务分配给节点。
* Pause 意味着调度程序不会将新任务分配给节点，但现有任务仍在运行。
* Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。
