一种选择是使用Overlay Network,例如weave。这很容易设置,可以让容器在不同的主机或甚至不同的数据中心之间进行通信,并且可以选择连接和隔离哪些内容。请注意:我在weave上工作。为什么需要附加组件? 如文档中所述,默认情况下,Docker会创建单主机桥接,并为每个容器提供私有IP地址。现在你有两个问题:如何在不同机器的桥接之间设置路由,以及如何隐藏或更改这些IP地址,因为它们不能在公共互联网上使用。你可以使用主机网络,使用docker run命令行选项--net=host,但这会失去从容器中获得的一些封装。目前正在进行关于Docker网络驱动程序的讨论,这将使解决方案更易于实现,但目前还没有代码。Amazon已经推出了他们自己的容器集群服务,承诺可以让容器相互通信,但目前还不可用。
我发现使用Open vSwitch - https://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/ 是最简单的解决方案!