求助: docker 容器内服务连接不上宿主机所在内网的其他服务器

53 天前
 maguoliang

有 2 台服务器,假设 A 为 10.12.203.39 ,B 为 10.12.203.40 。 我在 A 服务器搭建了 rabbitmq ,B 服务器搭建了 docker 、且启动了 1 个 docker 容器。 出现的问题是:B 服务器的 docker 容器连接不上 A 服务器的 rabbitmq ,但是我若不使用容器来连接 rabbitmq ,而是直接在 B 服务器上启动一个 java 服务来连接 rabbitmq 却能连上,尝试过用 host 模式来启动容器,还是一样连不上。

916 次点击
所在节点    Docker
15 条回复
oneisall8955
53 天前
在 B 主机 telnetA 主机的 rabbitmq 端口,
A docker rabbitmq 映射端口,正常会自动 iptables 过防火墙,你这个问题有点奇怪,还有,你确定 A 主机的 rabbitmq 运行正常了吗?会不会启动失败了?
yeungtien2021
53 天前
进入 B 主机的 docker 容器,能否 ping 通 A 主机?
julyclyde
53 天前
你那俩容器该不会都是 NAT 模式而且网段还相同吧??
maguoliang
52 天前
maguoliang
52 天前
@yeungtien2021 这个有点麻烦,就没 ping ,因为我用的是 java 镜像,很多命令都没有,安装过于麻烦。
maguoliang
52 天前
@julyclyde 我用的默认 bridge 模式。
julyclyde
52 天前
@maguoliang 既然 connected 那肯定四层通了
你看看服务端的日志
maguoliang
52 天前
@julyclyde 好的,我给你发下服务端的日志,麻烦帮忙分析下。
maguoliang
52 天前
maguoliang
52 天前
maguoliang
52 天前
julyclyde
51 天前
@maguoliang 你这是客户端的日志吧?
julyclyde
51 天前
你那个插件啥功能啊,为什么在 B 直接运行客户端就能连上呢?啥原理?
maguoliang
51 天前
@julyclyde 延迟消息交换机插件( rabbitmq_delayed_message_exchange ),是的这是客户端的日志,因为觉得只是一个很简单的连接 rabbitmq 而已,但就是连不上,所以一直再往容器连不上宿主机方向上找问题,然后今天看下了 rabbitmq 的日志发现这个插件一直没没装(本应该在安装完 rabbitmq 就装的),就尝试安装了下,然后就成功连上了,没报错信息了。至于直接启动客户端为啥能连上,我没深究。
julyclyde
51 天前
@maguoliang 难道不应该研究一下吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1085844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX