# Swarm 集群

## 创建Swarm 集群

```
$ docker swarm init
```

`--listen-addr ip : port`- 管理者节点

`advertise-addr ip`- 广播地址

## 加入Swarm 集群

```
$ docker swarm join-token manager
$ docker swarm join-token worker
```

添加manager或者worker节点到集群，只要执行对应的命令即可。

在创建的创建Swarm 集群的机器上，执行以下命令，会生成响应的执行命令，只需要在响应的机器上运行即可，就可以加入奥这个swarm集群。

![](/files/-LfnTJlB9u59zXg2KdSy)

## 查看swarm集群节点

```
$ docker node ls
```

只可以在Manager节点执行命令

## 创建共享网络

如果不同主机容器和容器之间业务通讯，还需要创建一个新的共享网络。

```
$ docker network ls 
$ docker network create -d overlay --attachable swarm_test
```

ingress网络仅用于管理Swarm集群，所以我们需要创建新的共享网络。

搞定之后就可以部署各种各样的集群了。比如PXC集群，只需要`--net=swarm_test`即可。

## 退出Swarm集群

* **主动退出Swarm集群：**

```
$ docker swarm leave --force
```

Manager 退出集群必须要使用`--force`参数,Work节点z直接执行`docker swarm leave`即可

* **被动退出Swarm集群：**

宿主机执行

如果manager节点想要退出集群

```
$ docker node ls
$ docker node demot 节点名字
$ docker stop node1
$ docker rm node1
$ service docker stop
$ docker node rm 节点名字
$ docker node ls
```

删除任何的节点必须要先停止它的Dokcer服务

Manager节点必须先降级成Worker节点，然后再去删除。

> 解除docker集群（解除docker集群，网络自动消失`docker network ls`查看）
>
> ```
> $ docker swarm leave -f
> $ docker network ls
> $ docker network rm docker_gwbridge
> ```

## 资料

[【Docker】 Swarm简单介绍](https://www.cnblogs.com/franknihao/p/8490416.html)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docker.shujuwajue.com/docker-ji-qun/swarm-ji-qun.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
