安装swarm环境

swarm manger、node安装、加入集群,以及集群维护。

docker-swarm主机计划

hostname IP comments
swarm-manager 192.168.31.40  
swarm-node1 192.168.31.41  
swarm-node2 192.168.31.42  

安装docker

安装swarm之前,先在manager、node节点完成docker环境安装,见: Docker常用操作

安装docker-swarm

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

swarm 集群由管理节点(manager)和工作节点(work node)构成。

manager节点初始化swarm

在manager节点上执行docker swarm init命令进行初始化。

# 初始化管理节点,记录输出的join --token信息,后面node节点用于加入集群
sudo docker swarm init --advertise-addr 192.168.31.40
Swarm initialized: current node (tonr5adn7buqjfqdx1kasmywy) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-0e77njbcxdi6r69gg4dsmp5su9okcqxia47gzogwcpfwkqexaa-20lhbjve4ajqz4472a3dmsjv4 192.168.31.40:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
# 查询join token信息:worker、manager节点
docker swarm join-token worker
docker swarm join-token manager

docker info    # 查看集群当前状态,可以看到Node Address、Manager Addreses信息
docker node ls # 查看节点状态
docker node ls

# 在把node添加到集群后,才会看到后面两个节点。
# MANAGER STATUS列标识为leader的是管理节点,node1和node2此列为空是worker节点。

ID                            HOSTNAME        STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
tonr5adn7buqjfqdx1kasmywy *   swarm-manager   Ready     Active         Leader           24.0.7
w4kwyvrmrazlto391br2q6iee     swarm-node1     Ready     Active                          24.0.7
2wwwkgepq5nz46tgiksbngwzo     swarm-node2     Ready     Active                          24.0.7

将node添加到swarm集群

在node节点执行docker swarm join-token命令加入集群(管理集群init完成时输出的参数)。

如果忘记了命令参数,则可以在 manager 节点执行docker swarm join-token worker查看。

sudo docker swarm join --token SWMTKN-1-0e77njbcxdi6r69gg4dsmp5su9okcqxia47gzogwcpfwkqexaa-20lhbjve4ajqz4472a3dmsjv4 192.168.31.40:2377
This node joined a swarm as a worker.

添加后,在manager节点上运行docker node ls,就可以看到三个节点了。