无法订阅 Docker Eclipse-Mosquitto Broker

Can't subscribe to Docker Eclipse-Mosquitto Broker

我有 eclipse-mosquitto image 和 运行,也是另一个容器中的发布者,可以成功连接和发布。我可以 shell 进入代理容器并使用 mosquitto_sub 保留消息,但是当我尝试从本地机器订阅时,连接被拒绝。

这是我用来启动容器的命令:

docker run --name mqtt --restart=always --net=host -tid  eclipse-mosquitto

使用了 --net=host 标志,所以我可以在任何地方使用 localhost。 这就是我尝试订阅的方式,它在容器内工作:

mosquitto_sub -h localhost -t TOPIC

是否有 Docker 标志或我错过的其他选项阻止我从本地机器订阅?或者 Docker 容器中的订阅者会工作吗?

仅在 Windows 上,需要为特定端口设置发布标志,因此启动代理的正确命令是

docker run --name mqtt -p 1883:1883 -tid eclipse-mosquitto

当发布者启动时

docker run -it --net=host mosquitto-pub

然后本地机器上的订阅者就可以毫无问题地启动

mosquitto_sub -t TOPIC

注意:代理的 --net=host 标志不能与发布标志一起使用。不确定为什么发布者仍然需要它。