假设我在 docker 网络上有一个 docker 容器,ip 为 172.20.0.2。
在该 docker 容器内有两个进程正在运行。
- 侦听端口 8000 的 http 服务器始终回复“hello”
- 不断尝试连接的 http 客户端http://example.com
是否有可能,使用 ip 表主持人机器,将该容器中的所有出站流量转发回同一个容器。
因此,在上面的场景中,对 example.com 的 http 请求实际上会转到同一容器内的 8000 端口,返回“hello”。
我觉得如果这不在 docker 中,以下内容会起作用。我很接近吗?
iptables -t nat -A OUTPUT -s 172.20.0.0/16 -j REDIRECT --to-ports 8000
但我认为这只是转发到主机上的 8000 :(
答案1
我建议编辑/etc/hosts
docker 容器上的文件:
172.20.0.2 example.com
这意味着每次客户端尝试连接http://example.com:8000通过 HTTP,流量将指向 172.20.0.2:8000 的 docker 容器,并按预期收到“hello”回复。