我启动并运行了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
标志不能与publish标志一起使用。虽然不确定为什么对发布者仍然有必要。
关于docker - 无法订阅Docker Eclipse-Mosquitto Broker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295313/