要使用 Docker Swarm 模式初始化一个新的 Swarm 集群或者将一个节点加入到现有的 Swarm 集群中,你可以按照以下步骤操作。
初始化新的 Swarm 集群(创建管理节点)
如果你想要初始化一个新的 Swarm 集群,你需要在你想作为管理节点的机器上运行以下命令:
docker swarm init --advertise-addr <管理节点IP>
--advertize-addr
参数是用来指定集群中其他节点可以用来连接该节点的 IP 地址。如果该参数省略,默认会使用当前主机的默认网关地址。
如果你在一个没有外部访问需求的环境中,可以简化命令为:
docker swarm init
这将会返回一些用于加入新节点到集群的信息,包括管理令牌和工作节点令牌。
加入新的节点到 Swarm 集群
加入管理节点
如果你想将另一台机器作为管理节点加入到集群中,你需要在那台机器上执行如下命令,并使用从 docker swarm init
命令中获取的管理令牌:
docker swarm join --token SWMTKN-<管理令牌> <现有管理节点的IP>:<端口>
加入工作节点
如果你想将一台机器作为仅执行任务的工作节点加入到集群中,那么你应该使用工作节点令牌:
docker swarm join --token SWMTKN-<工作节点令牌> <现有管理节点的IP>:<端口>
默认的端口是 2377
,但是如果你使用的端口不同,请确保使用正确的端口号。
注意,在 docker swarm join
命令中使用的 IP 地址应该是集群中任意一个管理节点的 IP 地址,并且这个节点应该可以被你要加入的新节点所访问。
加入后,你可以通过在任何 Swarm 管理节点上运行 docker node ls
来查看所有节点的状态。
这些命令需要在 Docker 守护进程上运行,并且需要有适当的权限来执行。如果你遇到任何权限问题,可能需要以 root 用户身份或者通过使用 sudo
来执行上述命令。不过,在生产环境中,建议使用非 root 用户并配置适当的 SELinux 或 AppArmor 规则以提高安全性。