Docker(CE版本18.09.1)踩坑笔记(四)------Swarm集中管理Docker

上篇文章中,执行 docker swarm init 之后,得到了一个 token,本文中,我们将利用这个 token 构造多个 Docker 机器的集中化管理。 在进行集群化之前,你需要多准备1-2台安装好 Docker 的机器。

在执行完 docker swarm init 之后,使用下面指令查看当前所有节点

docker node ls

输出内容中可以看到我们当前的机器:

ID                            HOSTNAME                STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
yipgq87kiwbq2rwcp7ni5b0eq *   localhost.localdomain   Ready               Active              Leader              18.09.1

我们假定两台Docker服务器A和B,A作为主,B作为从,当然你应该修改 A B 两台服务器的 HOSTNAME,来达到后面区分的目的。这里我们只将B的HOSTNAME修改为 10.150.1.60。

在A机器上,开放防火墙 2377 端口,以支持其他机器可以通过这个端口注册到A机器的 swarm 上。

firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload

查看是否添加成功:

firewall-cmd --list-ports

在B机器上,执行

docker swarm join --token SWMTKN-1-32h9o052kscg6h04qsi0t0r5orqgqv5j3nufjoup6i7n1crvnv-21ml1d9niakydkp7dw2um2xk7 10.150.1.99:2377

提示 This node joined a swarm as a worker. 即表示B机器加入成功。

这时,在A机器上执行  docker node ls 可以看到如下结果

ID                            HOSTNAME                STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
4u65amsuuwtoqm295h8ai0rb1     10.150.1.60             Ready               Active                                  18.09.0
yipgq87kiwbq2rwcp7ni5b0eq *   localhost.localdomain   Ready               Active              Leader              18.09.1

已经有两个节点。

然后发布你的程序 

docker stack deploy -c docker-compose.yml yourapp

然后执行 docker stack ps yourapp 即可看到应用部署到了两台不同的Docker服务器上

ID                  NAME                IMAGE                        NODE                    DESIRED STATE       CURRENT STATE           ERROR               PORTS
yc9ryhcqfl4u        yourapp_web.1       walli/yourapp:v1.0.0         10.150.1.60             Running             Running 6 minutes ago
73yjb566n35r        yourapp_web.2       walli/yourapp:v1.0.0         localhost.localdomain   Running             Running 9 minutes ago
tqh9jti3s7x0        yourapp_web.3       walli/yourapp:v1.0.0         localhost.localdomain   Running             Running 9 minutes ago

其实这中间的过程应该是,你应该在 A B 两台机器上都使用 docker login 登录你的账号,然后将上一篇文章中制作的带tag镜像上传到 Docker 服务器上,这时候你在 A机器(Swarm管理端)去发布你的应用的时候,在B机器上才能正常下载这个镜像并且安装。

 

 

你可能感兴趣的:(Docker)