【发布时间】:2015-02-15 06:05:30
【问题描述】:
基本上,在工作中我有一个 dhcp 地址分配为:
eth0 Link encap:Ethernet HWaddr 5c:26:0a:5a:b8:48
inet addr:10.10.10.193 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: <addr here>/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3591236 errors:0 dropped:0 overruns:0 frame:0
TX packets:2057576 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3449424352 (3.4 GB) TX bytes:384131635 (384.1 MB)
Interrupt:20 Memory:e2e00000-e2e20000
有了这个,我的主机就可以很好地连接到互联网了。但是我的 docker 机器都不能在工作时连接到互联网。它们的配置如下所示:
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::5484:7aff:fefe:9799/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:117799 errors:0 dropped:0 overruns:0 frame:0
TX packets:170586 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4858816 (4.8 MB) TX bytes:122237788 (122.2 MB)
当我在家坐在传统的 192.168 路由器交换机下时,一切正常。
所以,我在想,如果我以某种方式让 docker0 接口位于 eth0 后面,那么无论在家还是在工作中,一切都会正常工作。但我不熟悉配置linux接口。我发现一篇文章谈到了almost the exact same problem,但是按照这些命令更改将接口br0添加到10.10.10.200/24会出现以下症状:
- 我的主机不再能够解析域名。移除接口 br0 让它立即再次工作
- dockerized 应用程序现在可以 ping 4.2.2.1,但不能 ping 8.8.8.8 或 8.8.4.4 或解析域名。在 /etc/default/docker.io 中添加 --dns 4.2.2.1 tp DOCKER_OPTS 并不能解决问题。
- 移除 br0 接口后,docker 化的应用程序无法再 ping 4.2.2.1 或 8.8.8.8 或 8.8.4.4
我没有更改 iptables;它使用基本 ubuntu 14.04 主机的默认 docker 配置更改。
如何最好地配置接口,以便 docker 允许 docker 化的应用程序在家中和工作时连接到互联网?
【问题讨论】:
标签: linux networking docker