Docker 发布了端口,代理真的在那里监听吗?
连接被拒绝或重置时,同时检查代理容器内的监听地址与 Docker 的主机端口映射。
发布 Docker 端口只是提供了一条通往容器内端点的路径。它既不会启动代理,也不会改变该进程监听的地址。
对于典型的桥接网络映射,请对比以下三个值:
| 路径的环节 | 需要检查的值 |
|---|---|
| 客户端入口 | 客户端所连接的主机地址和发布端口 |
| 转发目标 | 映射所选择的容器地址和端口 |
| 服务 | 代理在容器内实际绑定的地址和端口 |
在容器内只绑定到 127.0.0.1 的代理,可能收不到转发到其网络地址的流量。这与只在主机回环地址上发布主机端口不同:后者限制的是谁能访问该映射,而容器回环可能让映射根本到不了服务。
请为预期的部署选择内部监听地址,同时保留受限的主机发布与代理访问。Dockerfile 中的暴露端口声明并不会启动服务,容器启动成功也不代表进程正在转发目标上监听。
追踪一次失败连接究竟走到了哪一步。拒绝和重置会随平台与转发实现而变化,因此任何一种都不能单独确定某项配置。等它到达服务后,检查是否收到有效的代理问候,并应用所需的 SOCKS 版本、认证与目标策略。仅仅能连上主机端口,并不能证明这些能力。