我需要在受控环境中测试我的kafka
消费者和消息触发器。所以我创建了一个ansible
项目来创建一些模拟kafka
服务器:mokafelk。
除了安全性之外,它工作正常。 playbook
默认情况下会旋转3个节点dockerized
kafka
群集,但kafka服务器上的侦听端口会向所有群集公开。以下是用于创建群集的Dockerfile
的{{3}}。
基本上我希望容器能够相互通信。我不认为容器链接是一种选择,因为在我看来,链接只是单向的。但是使用127.0.0.1:{{ port }}:{{ port }}
公开端口只会将端口暴露给托管计算机,如果我是正确的,则不会将端口暴露给其他容器。 0.0.0.0:{{ port }}:{{ port }}
将端口暴露给整个世界。那我怎么能两种方式链接两个+容器?这一定是一个常见问题,但我似乎找不到快速解决方案......
答案 0 :(得分:2)
这里详细解释了docker容器网络:https://docs.docker.com/engine/userguide/networking/dockernetworks/
简而言之:
默认情况下,docker守护程序会将网络适配器docker0添加到主机系统(它会尝试猜测可用的IP,通常使用172.17.0.1)。您可以在$ ifconfig
中看到这一点。
默认情况下,所有容器都以增量IP连接到此网络。您可以通过$ docker inspect <container name>
检查容器网络设置。
所以你的码头集群的IP很可能如下:
kafka1 172.17.0.2
kafka2 172.17.0.3
kafka3 172.17.0.4
elasticsearch 172.17.0.5
kibana 172.17.0.6
然后,您可以从主机系统和容器中访问172.17.0.2:9092,172.17.0.3:9092,172.17.0.4:9092的kafkas。