【发布时间】:2014-05-23 00:22:02
【问题描述】:
我正在设置两个 docker 容器
container1 container2
| | |
eth0 eth1 |
| | eth1
docker0 docker1<----------------
|
|
internet
docker0 和 docker1 是桥梁。
我在主机和容器中都有 ip 转发到 1。 我已经设置了
iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE in container 1
我仍然无法从容器 2 ping 任何东西到互联网。我可以看到容器 1 的 eth1 正在接收数据包。
OS: ubuntu 13.10
docker version: 0.11.1, build fb99f99
我缺少一些配置吗?
重现步骤:
SERV=$(docker run --privileged=true -i -d -t -v ~/Projects/code/myproject/build:/build:ro debian:7.4 /bin/bash)
CLI=$(docker run --privileged=true -i -d -t -v ~/Projects/code/myproject/build:/build:ro debian:7.4 /bin/bash)
sudo pipework br1 $SERV 10.1.0.1/8
sudo pipework br1 $CLI 10.1.0.3/8
在 $SERV 中: iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE
在 $CLI 中 禁用接口 eth0。设置默认路由到 eth1 接口。
现在从 $CLI 对 10.1.0.1 进行 ping,但对 Internet 没有。
【问题讨论】:
-
你是如何在 container1 中设置 eth0 和 eth1 的?使用管道、主机网络或其他方式?
-
我为此使用了管道系统。
-
您能提供一个逐步重现的方法吗?
-
添加了重现的步骤。
标签: containers iptables docker nat