Ada*_*ler 2 linux networking docker
基本上,在工作中我有一个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
Run Code Online (Sandbox Code Playgroud)
有了这个,我的主人,可以很好地连接到互联网.但是我的码头机器都不能在工作时连接到互联网.他们的配置如下:
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)
Run Code Online (Sandbox Code Playgroud)
当我在家里坐在传统的192.168路由器交换机下时,一切正常.
所以,我在想,如果我以某种方式让docker0接口坐在eth0后面,那么无论是在家里还是在工作中,一切都会起作用.但我不熟悉配置linux接口.我发现一篇文章谈到了几乎完全相同的问题,但更改了以下命令将接口br0添加到10.10.10.200/24后出现以下症状:
我没有改变iptables; 它使用基本ubuntu 14.04主机的默认docker配置更改.
如何最好地配置接口,以便docker允许dockerized应用程序在家中和工作中连接到Internet?
有关网络和网桥的大量详细信息,请访问:
由于我有一个使用Ubuntu 14.04的虚拟机,我不确定这是否会重现该解决方案.但是,我在我的办公室中具有相同的确切情况,其中一些VPN服务器提供与Docker默认在docker0网桥上使用的相同的默认网络IP.能够在办公室使用Docker并且在VPN使用时无法使用docker的行为真的令人沮丧.
因此,我使用了您在http://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/所使用的链接中描述的相同策略,但是在RHEL 6.5服务器上.但是,我确实尝试了许多不同的选项来实现它:
我在RHEL 6.5上有如下解决方案:
[root@pppdc9prd6dq newww]# cat /etc/sysconfig/network-scripts/ifcfg-bridge0
TYPE=Bridge
DEVICE=bridge0
NETMASK=255.255.252.0
IPADDR=192.168.5.1
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
DELAY=0
Run Code Online (Sandbox Code Playgroud)
以下是您手动创建桥接的步骤:
1.停止Docker
$ sudo service docker stop
Run Code Online (Sandbox Code Playgroud)
2.创建桥
$ ip link add bridge0 type bridge
$ ip addr add 192.168.5.1/20 dev bridge0
$ ip link set bridge0 up
Run Code Online (Sandbox Code Playgroud)
3.更新Docker守护程序以使用网桥
$ vim /etc/docker/daemon.json
$ { "bridge": "bridge0"}
Run Code Online (Sandbox Code Playgroud)
4.重启Docker
sudo service start docker
Run Code Online (Sandbox Code Playgroud)
如果一切正常,只需永久添加修复程序
1.与手册相同
2.更新以下文件
$ vim /etc/network/interfaces
auto bridge0
iface bridge0 inet static
address 192.168.5.1
netmask 255.255.252.0
bridge_ports dummy0
bridge_stp off
bridge_fd 0
Run Code Online (Sandbox Code Playgroud)
3.与手册相同
4.与手册相同
并确保bridge-utils已安装在服务器上,否则桥接接口将不会出现.
也许这会奏效吗?无论如何,在这里尝试一下,我们可以讨论和改变这个解决方案.我相信当他们开始在VPN内部使用Docker时,会有更多人遇到此问题.