我一直试图向同一网络上的容器发送http post请求,但主机拒绝连接。以下是我调试后得到的结果:
- 容器可以相互ping
- 我可以使用机器上的REST通信访问这两个容器
- 其他协议,AMQP和RPC通信工作良好
- 该请求引发错误:[error 111]:主机拒绝连接
- 我找到了一些涉及防火墙策略的解决方案,尝试了一下,但也不起作用
环境:
- 操作系统:Ubuntu 20.04 LTS
- 容器:使用fastapi的Uvicorn服务器
如有任何帮助,我们将不胜感激。
除非您的主机具有两个容器都可以解析的DNS名称,否则最简单的方法是使用--net=host
将两个容器绑定到主机的网络。
您可以将消费服务绑定到--net=host
,并将--publish
绑定到生产服务的端口。
问题是,容器在单独的网络命名空间中运行,您需要一些东西(例如主机的网络(来充当共享命名空间。
另一种解决方案是,如果您的主机有一个可由消费容器解析的DNS,那么当转发生产容器的端口时,您可以使用主机的DNS名称和主机的端口来引用生产服务的端口。