宿主机的 127.0.0.1:8118 与容器的 127.0.0.1:8118 通常是彼此独立的 loopback 端点。将代理变量传入无 root 容器并不会把这两个 loopback 接口连接起来。

在使用 pasta 的 Podman 部署中,其 namespace 到宿主机的 TCP 转发可以把所需的宿主机端口暴露到 namespace 内:

podman run --network=pasta:-T,8118 \
  --env http_proxy=http://127.0.0.1:8118 \
  --env https_proxy=http://127.0.0.1:8118 \
  existing-image application-command

使用应用现有的镜像和命令。示例假定宿主机侧在 8118 端口上有一个可用的 HTTP 代理,并且 Podman/pasta 版本支持所示的转发选项。

pasta 的大写 -T 从目标 namespace 向宿主机 namespace 转发。小写 -t 与 Podman 的 --publish 处理的是相反方向。因此,仅发布容器端口 8118 本身并不会让宿主机的代理对容器可用。

Podman 默认关闭 namespace 到宿主机的自动端口转发;显式端口用于选择这里所需的服务。单独的 pasta:--map-gw 选项涉及通过网关地址访问宿主机,那是另一种安排。

使用 Compose 时,请检查实际的提供程序及生成的网络配置。具名 bridge 网络不会仅仅因为某个独立的 podman run 命令成功使用了 pasta 就自动成为 pasta namespace。远程 Podman 引擎也会把“宿主机”放在引擎所在的位置。

相关文章