Docker:Swarm工作者连接到服务器

时间:2017-10-20 09:20:44

标签: docker networking server overlay swarm

我有一堆swarm容器(现在在一个主机中,但可能在多主机系统中,符合多节点群)。该系统由数据服务器和一组自治工作者组成,这些工作人员处理服务器接收的比特并摄取结果。输入数据检索和输出数据摄取是通过HTTP GET / POST完成的。服务器端(数据提供和结果接收)工作,并且当针对在任何主机中运行的工作者进行测试时,没有Docker,它运行没有问题。但我需要将这些工作人员放在Docker群中。

我无法实现的是不同群组工作者和外部服务器之间的通信。我的服务器在IP 10.69.180.30的主机上运行,​​位于端口8080中。

python test-dataserver.py -H 10.69.180.30 -p 8080

在几个论坛中挖掘后,我尝试使用--subnet 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

在这个简单的示例中,我不会将工作人员curl调用到服务器地址和get_task节点。它应该返回一个JSON字符串,其中包含有关要执行的任务的信息。但在服务器端,我没有收到任何请求。

我不是网络专家,所以我可能会遗漏一些微不足道的东西......(顺便说一下,我首先尝试做同样的事情,但让服务器在同一台主机上运行,​​但没有成功。)

您知道这种设置是否可行?我非常感谢任何暗示让这项工作......

提前致谢!

1 个答案:

答案 0 :(得分:1)

我将使用Dockers默认IP范围

创建覆盖网络

docker network create --driver overlay mynet

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

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