我有两个在容器上运行的keycloak实例,每个实例都在单个节点上运行。 这些节点是我公司网络内的裸机节点。
keycloak使用TCPPING作为发现协议。
由于这两个容器在不同的节点上运行,并且每个实例都固定在docker default网络内部,所以它们无法相互找到。
我说docker default network是因为我没有为这两个容器指定特殊网络。
任何想法都可以使该建筑设计中的两个实例相互发现!
我当时正在考虑使用docker swarm作为解决方案。
答案 0 :(得分:0)
假设两个节点位于同一网络上并且能够相互连接,则可以使用docker host networking
来使两个容器相互发现。就像docker run --net=host
Docker主机网络使容器可以使用主机节点的网络,因此,主机节点使用的DHCP服务器将为其分配IP地址,并且从所有实际目的来看,都将看起来像该网络中的另一台主机。 / p>
这允许两个容器使用TCPPING相互发现
Docker swarm也将启用此功能。Docker swarm基本上抽象了多个主机节点,因此您可以像在单个主机上运行docker一样在其上进行容器化。但这将需要docker-machine
和全新的设置。