【发布时间】:2019-02-08 20:42:05
【问题描述】:
我正在尝试做一些非常简单的事情:使用官方 NiFi docker 镜像 (https://hub.docker.com/r/apache/nifi/) 运行一个非常简单的 NiFi“Hello World”教程 (https://github.com/drnice/NifiHelloWorld)。
问题是我无法从该教程(称为 Nifi-WebServer-HandleHTTP)访问 HandleHttpRequest 处理器的端口。端口是 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 服务器似乎在容器内的正确端口上运行,端口映射在那里,但我无法从外部访问它。
有人知道为什么吗?
【问题讨论】:
-
我不明白stackoverflow.com/a/43244765/348975,但它回答了你的问题吗?
-
@emory 我确实使用 -p 6688:6688 发布了端口。我将编辑问题以包含它。我会尝试 -p 0.0.0.0:6688:6688 方法,但我不确定为什么需要它,因为端口 8080 没有 IP 地址也能正常工作。
-
@emory 实际上看起来它们是等价的:link to clarification
-
我也不知道为什么需要
0.0.0.0,但你是明智的尝试。你能试试docker network create test_it && docker network connect --alias mycontainer testit nifi4之类的东西吗?然后从另一个也连接到 test_it 网络的容器中查看是否可以访问 nifi。我不知道为什么它会起作用而端口转发不起作用,但这是我接下来要尝试的。 -
@emory 也不适用于其他容器,因为 NiFi 处理器本身的“localhost”绑定(请参阅接受的答案)。非常感谢您的回复,我了解了如何在 docker 中创建网络并为它们分配容器!
标签: docker http apache-nifi