【发布时间】:2019-04-25 21:00:12
【问题描述】:
我有一些在 docker 容器中运行的中间件。
当我在我的主机上运行此中间件时,一切正常。
当我在 docker 容器上运行它时,所有必要的端口都暴露并发布了:
Dockerfile:
EXPOSE 5672 15672 1337 1338 5556 3000
Docker-compose.yml
ports:
- "5672:5672"
- "15672:15672"
- "1337:1337"
- "1338:1338"
- "5556:5556"
- "3000:3000"
这很奇怪,因为我在那个图像中有 rabbitmq 和 mule。 Rabbit 运行良好,因为我可以访问管理控制台并在其中发布我的 mule 应用程序。
我有一个流程,在 rabbitmq 中发布一个石英组件,每 30 毫秒保持一次活动,并且运行良好。
但我有其他流在 UDP 入站端点中接收信息并将其发布到 rabbitmq 队列上。 入站端点没有收到任何东西,这个端点监听 0.0.0.0 和端口 1338,我正在绑定 1338:1338。
因此,如果我在主机上的 localhost:1338 上收到包,入站端点应该不会收到它吗?
另外,在其他流程中,我有一个 java 客户端套接字,它使我的连接被拒绝。
奇怪的是,当我在主机上运行它时,什么都没有发生,而在 docker 中,我公开并发布了端口。
谢谢大家
【问题讨论】:
-
查看
docker inspect <container id> -
有很多端口。容器中运行的单个进程是否在监听所有进程?
-
docker inspect 在 docker-compose 和 dockerfile 的定义中看起来不错。是的,我确信我正在监听我检查过的所有端口。谢谢。
-
问题是在主机上运行的中间件没有给我任何错误。现在在 docker 容器中,我使用的所有端口都与主机链接,但连接被拒绝。我需要做更多配置吗?
标签: java docker sockets mule mule-component