Docker:Swarm workers连接到服务器

Docker:Swarm workers连接到服务器,docker,networking,server,overlay,swarm,Docker,Networking,Server,Overlay,Swarm,我现在在一个主机中有一堆群集容器,但可能在多主机系统中,符合多节点群集。该系统由一个数据服务器和一组处理服务器接收到的位并接收回结果的自主工作人员组成。输入数据检索和输出数据摄取是通过HTTP GET/POST完成的。服务器端数据提供和结果接收工作正常,当针对在任何主机上运行的工作程序(没有Docker)进行测试时,它运行没有问题。但我需要把这些工人安置在码头工人群里 我无法实现的是不同swarm工作人员与外部服务器之间的通信。我的服务器运行在IP为10.69.180.30的主机上,端口为808

我现在在一个主机中有一堆群集容器,但可能在多主机系统中,符合多节点群集。该系统由一个数据服务器和一组处理服务器接收到的位并接收回结果的自主工作人员组成。输入数据检索和输出数据摄取是通过HTTP GET/POST完成的。服务器端数据提供和结果接收工作正常,当针对在任何主机上运行的工作程序(没有Docker)进行测试时,它运行没有问题。但我需要把这些工人安置在码头工人群里

我无法实现的是不同swarm工作人员与外部服务器之间的通信。我的服务器运行在IP为10.69.180.30的主机上,端口为8080

python test-dataserver.py -H 10.69.180.30 -p 8080
在几个论坛中挖掘之后,我尝试创建一个覆盖网络,子网为-10.69.180.0/24,然后在另一台主机上启动连接到此网络的工作人员服务。但不可能

docker network create --driver overlay --subnet 10.69.180.0/24 mynet
docker service create --network mynet --name mysrv --replicas 4 \
                 centos curl http://10.69.180.30:8080/get_task
在这个简单的示例中,我不调用worker,只调用服务器和get_任务节点的地址。它应该返回一个JSON字符串,其中包含有关要执行的任务的信息。但是在服务器端,我没有收到任何请求

我不是网络专家,所以我可能遗漏了一些琐碎的东西。。。顺便说一句,我第一次尝试做同样的事情,但是让服务器在同一台主机上运行,没有成功

你知道这种设置是否可行吗?我将非常感谢任何提示,使这项工作


提前谢谢

我会用Dockers的默认IP范围创建一个覆盖网络

docker网络创建-驱动程序覆盖mynet

在此之后,将外部主机添加到服务中

docker service create 
       --add-host external:10.69.180.30 \
       --network mynet --name mysrv --replicas 4 \
       centos curl http://external:8080/get_task

但是,swarm create命令是否允许添加主机选项?我以为它只适用于传统容器。至少它在我的系统中不起作用…当然,它起作用了!我的意思是,如果我修改映像,使/etc/hosts文件包含服务器的IP,那么通信就建立了!现在,我想达到同样的效果,但不必调整容器的图像。。。