无法从 Mosquitto 泊坞窗外部连接

And*_*ins 6 mqtt docker mosquitto

我正在以 docker 身份运行 Mosquitto 2.0.7。

如果我尝试从 docker 中使用 mosquitto_sub 我可以做到。如果我从另一台机器上尝试它,我会收到连接被拒绝的消息。

docker 正在运行,公开端口 1883 和 9001。docker 正在主机网络上运行。docker日志上没有任何错误。

谢谢

aze*_*abs 10

我有同样的问题。尝试在 ./services/mosquitto/mosquitto.conf 中进行以下更改:在您的配置文件中添加、替换或验证以下行:

allow_anonymous true
listener 1883
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
Run Code Online (Sandbox Code Playgroud)

并重新启动您的容器 mosquitto。


dpe*_*ish 6

似乎在某个时候,配置文件的位置已更改。

只要network_mode设置为“host”并且配置文件被复制到容器中的正确文件夹中,那么从 2.0.14 开始,以下 yml/configs 应该可以正常工作:

docker-compose.yml

version: "3"
services:
  mosquitto:
    image: eclipse-mosquitto:latest
    container_name: mosquitto
    network_mode: "host"
    volumes:
      - ./conf:/mosquitto/config
      - ./data:/mosquitto/data
      - ./log:/mosquitto/log
Run Code Online (Sandbox Code Playgroud)

conf/mosquitto.conf

persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883 0.0.0.0

## Authentication ##
allow_anonymous true
#password_file /mosquitto/conf/mosquitto.conf
Run Code Online (Sandbox Code Playgroud)

发出 plain-oldsudo docker-compose up -d应该可以工作,暴露主机网络上的端口。


JD *_*len 1

我的 Mosquitto Docker 容器配置了port 1883,这似乎将其绑定到0.0.0.0,这允许从容器外部进行访问。确保您还在启动命令中公开了端口:

docker run -d --name="mosquitto" -p 1883:1883 prologic/mosquitto
Run Code Online (Sandbox Code Playgroud)

  • `prologic/mosquitto` 似乎是基于 crux linux 的;我将它安装在我的机器上,并且使用 Mosquitto 1.3.1,因此与问题(指定版本)并不真正相关。请注意,1.3.1 于 2014 年发布,因此您可能需要考虑迁移到“eclipse-mosquitto”映像。 (2认同)