无法连接到 Eclipse Mosquitto 图像

Unable to connect to the Eclipse Mosquitto image

我无法从客户端容器访问我的 Mosquitto 服务器,我不知道为什么。

这是 docker-compose.yml 的摘录:

version: '3.3'
services:
   wd_mosquitto:
     image: eclipse-mosquitto:latest
     container_name: wd-mosquitto
     ports:
       - 1883:1883

   wd_message_client:
     image: wd_message_client_image
     container_name: wd-message-client
     ports:
       - 1883:1883
     external_links:
       - wd_mosquitto
     depends_on:
       - wd_mosquitto

这是我尝试从客户端容器中订阅代理的结果 docker exec -it wd-message-client /bin/bash

root@72f57bdda570:/code# mosquitto_sub -h "test.mosquitto.org" -t "#" -C 3
{ replies from the test server that confirm mosquitto_sub works }

root@72f57bdda570:/code# mosquitto_sub -h "tcp://wd-mosquitto:1883" -t "#" -C 3
Unable to connect (Lookup error.).

root@72f57bdda570:/code# ping wd-mosquitto
PING wd-mosquitto (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: icmp_seq=0 ttl=64 time=0.112 ms 

很好,mosquitto_sub 有效,我可以解析和 ping Mosquitto 容器,但无法订阅代理。

这是我使用 docker exec -it wd-mosquitto /bin/sh(bash 不可用)

在 Mosquitto 容器中摆弄的结果
/ # ps
PID   USER     TIME   COMMAND
    1 mosquitt   0:00 /usr/sbin/mosquitto -c /mosquitto/config/mosquitto.conf
    6 root       0:00 /bin/sh
   12 root       0:00 ps

/ # mosquitto
1521984736: mosquitto version 1.4.12 (build date 2017-06-01 13:03:46+0000) starting
1521984736: Using default config.
1521984736: Opening ipv4 listen socket on port 1883.
1521984736: Error: Address in use

/ # mosquitto_sub -t "$SYS"
/bin/sh: mosquitto_sub: not found

好的,我想 mosquitto_sub 不包含在 docker 图像中,但我可以确认 Mosquitto 运行 在端口 1883 上。为什么无法访问?我没有指定配置文件,所以它应该允许匿名连接。

有什么想法吗?

端口问题

目前您将两个容器端口映射到同一个主机端口,这可能会导致一些奇怪的问题。从容器开始,您可以直接与任何容器端口通信,您也不需要修复主机端口。

如何修复

您可以这样替换这些行:

- 1883:1883

与:

- 1883

视觉

之前:

之后: