You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内XMLRPC客户端无法连接同网络服务端

问题解决:同一Docker网络中容器无法互相连接

1. 修复服务端监听地址问题

你的服务端代码中,XMLRPC服务绑定的是localhost(即127.0.0.1),这意味着服务只会监听容器内部的回环地址,同一Docker网络中的其他容器无法通过容器IP访问到这个服务。

修改服务端代码中的监听地址为0.0.0.0,这样服务会监听容器的所有网卡:

# 原代码
server = SimpleXMLRPCServer(("localhost", 8000))
# 修改后
server = SimpleXMLRPCServer(("0.0.0.0", 8000))

2. 修复客户端Dockerfile的复制错误

你提供的客户端Dockerfile中,错误地复制了server.py到容器中,导致客户端容器实际运行的是服务端代码,自然无法连接到真正的服务端。

修改客户端Dockerfile:

# 原代码
COPY src/server.py .
# 修改后
COPY src/client.py .

3. (可选)使用容器名代替IP访问

同一自定义Docker网络中,容器可以通过容器名直接通信,无需硬编码IP地址,这样更灵活(IP可能随容器重启变化)。修改客户端代码中的服务地址:

# 原代码
server="http://172.18.0.2:8000/"
# 修改后
server="http://python_server:8000/"

验证步骤

  1. 重新构建服务端和客户端镜像:
    cd ~/test_networking/xmlrpcserver
    docker build . --tag python_server:v1.0
    cd ~/test_networking/xmlrpcclient
    docker build . --tag python_client:v1.0
    
  2. 停止并删除原有容器:
    docker stop python_server python_client
    docker rm python_server python_client
    
  3. 重新启动容器:
    docker run --net myNetwork --name python_server python_server:v1.0
    docker run --net myNetwork --name python_client python_client:v1.0
    

此时客户端应该能正常连接到服务端并输出结果。

内容的提问来源于stack exchange,提问作者Layer8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:15:01