我在机架空间有一个小型集群,其中一个专用networking的范围是192.168.3.0/24。 我想我的工人服务使用这个networking互相交谈,但不能弄清楚如何让docker允许。
我的理想configuration是一个单独的面向公众的容器,代理与工作人员的连接,然后可以与私人networking中的各种服务交谈来完成工作。
eth0 -> load balancer --> 192.168.3.3:80 --> 192.168.3.5:1234 (db) \-> 192.168.3.4:80 / \> 192.168.3.5:80/
如果所有的工人都在同一台机器上,我可以通过docker run --link ...来完成这个docker run --link ...但是由于他们在不同的机器上,这是行不通的。
上例中的工作人员使用类似这样的命令启动:
docker run -d -p $PRIVATE_IPV4:80:80 myworker
和数据库开始像这样:
docker run -d -p $PRIVATE_IPV4:1234:1234 mydb
从主机我可以谈到每个容器,但每个容器不能路由到任何其他容器。 IE curl http://192.168.3.4可以从主机上运行,但不能从运行在主机上的容器运行。
在这种情况下,负载均衡器是nginx开始像这样:
docker run -d -p $PUBLIC_IPV4:80:80 nginx
nginx.conf
upstream app { server 192.168.3.3:80; server 192.168.3.4:80; server 192.168.3.5:80; } ...
这似乎是一个非常标准的configuration。 我究竟做错了什么?
您可以尝试在CoreOS之上的Kubernetes之类的容器pipe理器中实现您的架构。 那里有很多指南。 这是DockerCon https://www.brighttalk.com/webcast/11427/136165关于容器集群pipe理的介绍。
目前,Docker本身并不提供容器networking设施。 编织是最简单的覆盖SDN解决scheme之一。 它适用于任何云,甚至跨多个云。
我应该放弃,我是一个编织工程队。