如何基于汇合的docker快速入门设置外部访问的汇合docker

时间:2017-09-05 23:58:19

标签: docker apache-kafka apache-zookeeper confluent

以下内容基于此快速入门指南:http://docs.confluent.io/current/cp-docker-images/docs/quickstart.html

在那里,他们在自己的docker容器中演示了各种kafka / confluent组件,每个组件都以

开头
  

- 净=宿主

标记并通过

访问
  

本地主机:端口

无论我做什么,我都无法从ubuntu服务器本身外部访问它,无论是通过ip还是域,他们声明应该工作,例如为控制中心。 但在同一台主机上,我的ubuntu盒子,一切正常。

知道问题可能在这里吗?已经坚持了好几个小时

2 个答案:

答案 0 :(得分:4)

问题是您无法访问端口(即无法使用telnet),或者您无法使服务器正常工作(即服务器没有应答请求)?

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092 \,这是kafka经纪人在初始连接后与客户进行通信的地址(除了本地主机,这显然不会工作......)。您可以使用服务器的IP替换localhost,它应该可以正常工作。

更具体地说,有listeners config(默认值0.0.0.0:9092)和advertised.listeners(默认PLAINTEXT:// locahost:9092) 客户端通过listener绑定初始化(bootstrap-server或broker-list)上的connexion。完成此初始连接后,代理将返回集群中所有代理的所有advertised.listeners,这是后续交换所使用的内容)

从github repo,confluent为监听器分配广告监听器的值,将主机更改为0.0.0.0(因此可以从远程访问确定) 您不能将0.0.0.0设置为advertised.listeners,但它必须是唯一可访问的接口

答案 1 :(得分:0)

现在回答自己,这是一个非常简单的防火墙/码头工具:

使用UFW(防火墙)和泊坞窗时

小心

请参阅http://blog.viktorpetersson.com/post/101707677489/the-dangers-of-ufw-docker

我在端口3000上使用了一个简单的nodeJS hello world示例,只要我使用默认/网桥并发布端口(-p 3000:3000)就可以从外部连接到它。

使用主机网络我根本无法连接。

在这两种情况下,防火墙(ubuntu上的UFW)都没有明确允许端口3000,所以Docker必须在这里做一些隐藏的魔法来重写iptables,而UFW没有注意到允许桥接和发布的端口通过。

=>通过在UFW中明确打开kafka端口来解决