我有两个在容器上运行的keycloak实例,每个实例都运行在一个节点上。节点是我公司网络内的裸机节点。
keycloak使用TCPPING作为发现协议。
由于这两个容器在不同的节点上运行,并且每个实例都在docker默认网络中运行,因此它们无法找到彼此。
我说docker默认网络因为我没有为这两个容器指定特殊网络。
任何想法如何让这个建筑设计中的两个实例发现彼此!
而我正在考虑将docker swarm作为解决方案。
假设这两个节点在同一网络上并且能够相互连接,您可以使用docker host networking让两个容器相互发现
它会像docker run --net=host
一样容易
Docker主机网络使容器使用主机节点的网络,因此将由主机节点使用的DHCP服务器分配IP地址,并且出于所有实际目的,看起来像该网络中的另一个主机。
这允许两个容器使用TCPPING发现彼此
Docker swarm还可以启用此功能.Docker swarm基本上抽象了多个主机节点,这样您就可以在它们上面使用容器,就像在单个主机上运行docker一样。但这将需要docker-machine
和全新的设置。