【问题标题】:Can't connect to my broker in a docker container [duplicate]无法在 docker 容器中连接到我的代理 [重复]
【发布时间】:2021-03-18 15:38:10
【问题描述】:

我正在尝试在 docker 容器中设置 mqtt 代理。我在我的机器上提取了以下 docker 镜像 (https://hub.docker.com/_/eclipse-mosquitto),我可以使用以下命令成功启动 docker 容器:

 docker run -it -p 1883:1883 -p 9001:9001 --network=host eclipse-mosquitto

如果我使用该命令运行它,我会得到以下输出:

WARNING: Published ports are discarded when using host network mode
1616081533: mosquitto version 2.0.9 starting
1616081533: Config loaded from /mosquitto/config/mosquitto.conf.
1616081533: Starting in local only mode. Connections will only be possible from clients running on this machine.
1616081533: Create a configuration file which defines a listener to allow remote access.
1616081533: Opening ipv4 listen socket on port 1883.
1616081533: Opening ipv6 listen socket on port 1883.
1616081533: mosquitto version 2.0.9 running

然后我启动 Mqqtfx 并设置到 127.0.0.1 和端口 1883 的连接,但 mqtt 客户端无法连接到我的代理。我做错了什么?

提前致谢!

【问题讨论】:

    标签: docker mqtt


    【解决方案1】:

    好的,让我们看看这些日志:

    警告:使用主机网络模式时,已发布的端口将被丢弃

    在主机模式下,容器暴露的端口可以直接从您的本地机器 IP 访问(容器使用您的主机 IP 地址)。所以启动容器时不需要-p选项

    1616081533:以仅本地模式启动。只有在这台机器上运行的客户端才能建立连接。

    1616081533:创建一个配置文件,定义一个监听器以允许远程访问。

    您似乎需要更改 Mosquitto 的一些配置:创建一个 mosquitto.conf 文件并更精确地查看 bind_addresslisteners

    等选项

    你可以找到更多关于herehere的信息

    【讨论】:

    • 你认为这一定是我的情况吗?因为我现在只想在本地访问代理。所以 docker 镜像位于我想要访问它的同一台机器上。
    • 是的,这是必需的,因为容器中的蚊子实际上是在不同的(虚拟)机器上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    相关资源
    最近更新 更多