Keycloak docker 个容器无法发现彼此
Keycloak docker containers are unable to discover each others
我在容器上有两个 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
和全新的设置。
我在容器上有两个 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
和全新的设置。