【发布时间】:2017-07-25 04:27:04
【问题描述】:
我最初正在使用 Docker 桥接网络进行一些组合,并注意到请求总是从网关 IP 发送,而不是列入白名单的本地 IP。
为了以最小的努力重现它,我使用了两个 Python 容器来运行 HTTP 服务器和客户端:
docker run -it --rm python:alpine sh
在服务器端:
python -m http.server
在客户端:
wget 172.17.0.3:8000
预期的输出,是请求来自容器IP:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
172.17.0.2 - - [time] "GET / HTTP/1.1" 200 -
实际输出,请求来自网桥网关IP:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
172.17.0.1 - - [time] "GET / HTTP/1.1" 200 -
但是,当我在笔记本电脑上运行相同的测试时,我得到了预期的行为(容器 IP)。这个问题似乎只发生在我的服务器上。
什么会导致这种行为?是某种 sysctl 或 iptables 问题吗?
【问题讨论】:
标签: docker network-programming