为了简化操作,可以写一个shell脚本来批量运行。在Slave-1和Slave-2服务器下创建一个
init.sh 文件,其内容如下。
apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
apt-get update
apt-get install -y docker-ce
echo '{ "insecure-registries":["45.77.138.242:8003"] }' >> /etc/docker/daemon.json
systemctl restart docker
docker swarm join --token SWMTKN-1-0hqsajb64iynkg8ocp8uruktii5esuo4qiaxmqw2pddnkls9av-dfj7nf1x3vr5qcj4cqiusu4pv 45.77.138.242:2377把这个文件设置为可自行文件,并运行:
chmod +x init.sh
./init.sh如下图所示。

等待脚本运行完成以后,你就可以从Slave-1和Slave-2的SSH上面登出了。以后也不需要再进来了。
回到Master服务器,执行下面的命令,来确认现在集群已经有3个节点了:
docker node ls看到现在集群中已经有3个节点了。如下图所示。

到止为止,最复杂最麻烦的过程已经结束了。剩下的就是体验Docker Swarm带来的便利了。
创建测试程序
搭建测试Redis
由于这里需要模拟一个分布式爬虫的运行效果,所以先使用Docker搭建一个临时的Redis服务:
在Master服务器上执行以下命令:
docker run -d –name redis -p 7891:6379 redis –requirepass “KingnameISHandSome8877”
这个Redis对外使用
7891 端口,密码为
KingnameISHandSome8877 ,IP就是Master服务器的IP地址。编写测试程序
编写一个简单的Python程序:
import time
import redisclient = redis.Redis(host='45.77.138.242', port='7891', password='KingnameISHandSome8877')
while True:
data = client.lpop('example:swarm:spider')
if not data:
break
print(f'我现在获取的数据为:{data.decode()}')
time.sleep(10)
这个Python每10秒钟从Redis中读取一个数,并打印出来。
编写Dockerfile
编写Dockerfile,基于Python3.6的镜像创建我们自己的镜像:
from python:3.6
label mantainer='[email protected]'user root
ENV PYTHONUNBUFFERED=0










