如何让不同的docker容器相互通信,而不将端口暴露给整个世界

zrfyljdw  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(490)

我需要测试一下我的大脑 kafka 受控环境中的使用者和消息触发器。所以我做了一个 ansible 创建一些模拟的项目 kafka 服务器:mokafelk。
它工作得很好,只是安全性很差。这个 playbook 旋转一个3节点
dockerized kafka 默认情况下为群集,但kafka服务器上的侦听端口对所有端口公开。这是你的答案 jinja2 模板 Dockerfile 用于创建群集。
基本上,我希望容器能够相互对话。我不认为容器链接是一种选择,因为在我看来链接只是单向的。但是使用 127.0.0.1:{{ port }}:{{ port }} 如果正确的话,只将端口暴露给主机,不将端口暴露给其他容器。 0.0.0.0:{{ port }}:{{ port }} 向全世界展示港口。那么我怎样才能双向链接两个+容器呢?这一定是一个常见的问题,但我似乎没有找到一个快速的解决办法。。。

unftdfkk

unftdfkk1#

docker容器联网的详细说明如下:https://docs.docker.com/engine/userguide/networking/dockernetworks/
简而言之:
默认情况下,docker守护程序将网络适配器docker0添加到主机系统(它尝试猜测可用ip,通常使用172.17.0.1)。你可以从中看到这一点 $ ifconfig .
默认情况下,所有容器都以增量IP连接到此网络。您可以通过检查容器网络设置 $ docker inspect <container name> .
因此,docker集群的IP很可能如下所示:
Kafka1 172.17.0.2
Kafka2 172.17.0.3
Kafka3 172.17.0.4
ElasticSearch172.17.0.5
Kibana172.17.0.6
然后,您可以通过主机系统和容器访问您的kafka,访问时间分别为172.17.0.2:9092、172.17.0.3:9092、172.17.0.4:9092。

相关问题