Docker容器端口映射为不同端口时无法互相连接问题咨询
问题根本原因
同一Docker自定义网络下的容器间通信,直接使用容器内部监听的端口即可,不需要走宿主机的端口映射端口,配置的错误点出现在second_service的构建参数部分:
- 端口映射规则
19120:9120的作用是将宿主机的19120端口转发到base_service容器内部的9120端口,该规则仅适用于从宿主机外部/宿主机本地进程访问容器服务的场景 - 你在
second_service的构建参数BASE_SERVICE_PORT里填了宿主机映射端口19120,而base_service容器内部实际监听的端口是9120,所以second_service请求base_service:19120时自然无法连通 - 之前端口映射为
9120:9120时功能正常,是因为宿主机映射端口和容器内部端口恰好一致,属于误打误撞的正常运行,不是正确的配置逻辑
修复方案
将second_service的构建参数里的BASE_SERVICE_PORT改为容器内部端口即可:
args: BASE_SERVICE_HOST: base_service BASE_SERVICE_PORT: 9120
内容的提问来源于stack exchange,提问作者Helgi Borg
相关产品推荐
相关产品推荐

