外部 HTTP 代理不必知道 Docker 的 api 服务名。对于 http://api:8080/,代理会发起后续连接,因此在应用容器内解析成功,并不代表代理侧能看到同样的 DNS。

如需按预期直连,请把例外加入该容器的环境变量:

environment:
  http_proxy: http://proxy.example:8080
  https_proxy: http://proxy.example:8080
  no_proxy: api

对 api 的直接请求会走容器自身的路由和内置解析器。两个容器仍需位于共享的用户自定义网络中,服务也必须监听 8080。符合条件的外部请求仍然走代理。如果这些公网目标可以使用公共中转,HTTP 代理列表 提供了免账号代理 URL 的候选;请把 api 保留在直连例外中。

如果重建后的容器仍带有意外变量,请检查 Docker 客户端的 config.json proxies 部分,它可能注入环境值。修改目标条目,并按正常流程重建受影响的容器,同时保留无关配置。

相关文章