我启动并运行了eclipse-mosquitto image,并且是另一个容器中的发布者,该容器成功连接并发布了。我可以将其装入代理容器并使用mosquitto_sub保留消息,但是当我尝试从本地计算机订阅时,连接被拒绝。
这是我用来启动容器的命令:
docker run --name mqtt --restart=always --net=host -tid eclipse-mosquitto
使用了--net=host
标志,因此我可以在任何地方都使用localhost
。
这就是我尝试订阅的方式,它可以在容器内工作:
mosquitto_sub -h localhost -t TOPIC
是否存在我错过了阻止我从本地计算机订阅的Docker标志或其他选项?还是Docker容器中的订户可以工作?
答案 0 :(得分:1)
仅在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标志一起使用。不确定为什么对发布者仍然有必要。