【发布时间】:2017-11-25 23:27:11
【问题描述】:
我有一个 Docker 主机,它应该允许每个容器有多个静态 IP 地址。容器内的应用程序应该能够选择从哪个地址向远程主机发送流量(例如ping -I <source-address> example.com)。
想象一下这样的设置:IP 地址10.0.0.10 - 10.0.0.19 分配给ContainerA,10.0.0.20 - 10.0.0.29 分配给ContainerB,依此类推。任何到 ContainerA 的地址范围的流量都会转发到 ContainerA,而传出流量则来自 ContainerA 可以选择的该范围内的地址。这同样适用于 ContainerB。
默认的--net=bridgemode 似乎不支持这一点。我能得到的最接近的是 传入 到任何 ContainerA 地址的流量都正确转发到容器,但 传出 流量总是来自同一个地址。
当使用--net=host 时,第一个容器将附加到所有可用的 IP 地址,因此第二个容器将无法打开其 IP 范围内的套接字。
docker run 命令的--ip 选项似乎接近我所需要的,如this blog post 中所述。不幸的是,它似乎不支持每个容器有多个静态 IP。
如果更方便,可以使用 CIDR 子网而不是 IP 范围。
我需要如何配置 Docker 来实现这一点?
【问题讨论】:
-
你成功了吗?我的要求是类似的。很想知道你的案子的结果。
标签: networking docker iptables