为什么我不能通过Docker访问NiFi流的开放HTTP端口?

时间:2019-02-08 20:42:06

标签: docker http apache-nifi

我正在尝试做一个非常简单的事情:使用官方的NiFi docker映像(https://hub.docker.com/r/apache/nifi/)来运行一个非常简单的NiFi“ Hello World”教程(https://github.com/drnice/NifiHelloWorld)。

问题是我无法从该教程访问HandleHttpRequest处理器的端口(称为Nifi-WebServer-HandleHTTP)。端口是6688。

我已将端口6688映射到localhost,这在portainer中已得到确认: Portainer Snapshot Showing port mappings

URL localhost:8080可以正常工作,我可以访问NiFi UI并与其进行交互。

但是当我尝试localhost:6688时,出现错误(服务器的空响应)。

更多信息

1)当我通过Portainer登录到“ nifi3”容器控制台时,我可以运行“ curl localhost:6688”,并得到预期的结果(一些HTML返回)。

2)我已经通过netstat确认主机上没有其他设备正在使用6688。

3)完整容器运行命令:

docker run --name nifi4 -d -p 8080:8080 -p 6688:6688 -p 9998:9998 -v `C:/temp/GitHub/NifiHelloWorld/Archive`:/mnt/nifi_hello_world -v C:/temp/nifi_out:/mnt/nifi_out nifi3 -v 4a8bd6cab08f08af457001810a312816757f40a7c16d2583dd6a9eabfd76db78:/opt/nifi/nifi-current/conf

所以HTTP服务器似乎在容器内的正确端口上,端口映射在那里,但是我无法从外部访问它。

有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

好像您被容器开始攻击了。您使用的模板将HandleHttpRequest处理器的主机名指定为“ localhost”。因此,它将仅在容器实例内部的环回接口上接受请求。

Template Configuration

您需要将其从模板实例中删除,以便它可以绑定到所有接口,并允许通过docker命令参数按预期运行端口转发。