无法连接到 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
视觉
之前:
之后:
我无法从客户端容器访问我的 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 不可用)
/ # 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
视觉
之前:
之后: