无法连接到Eclipse Mosquitto映像

时间:2018-03-25 13:52:14

标签: docker docker-compose mosquitto

我无法从客户端容器访问我的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摆弄Mosquitto容器的结果(bash不可用)

/ # 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上运行的。为什么它不可以访问?我没有指定配置文件,所以它应该允许匿名连接。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

端口

问题

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

如何修复

您可以替换这样的行:

- 1883:1883

使用:

- 1883

的视觉

<强>之前:

enter image description here

<强>后:

enter image description here