构建Docker容器集群(九)

Docker容器集群构建

使用自定义网桥连接跨主机容器

Docker默认的网桥是docker0。它只会在本机连接所有的容器。
举例来说容器的虚拟网卡在主机上看一般叫做veth* 而docker0网桥把所有这些网卡桥接在一起,如下所示:

$ brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242654a50a0 no veth0ed0667
vethac5dad4
vethec37503

这之前需要安装网桥管理工具

$ sudo apt-get install bridge-utils

在容器里的ip看成一个私有的网络,如果要让外网连接到容器中,就需要做端口映射,即-p参数。
在这里插入图片描述
例如,主机A和主机B的网卡一都连着物理交换机的同一个vlan101,这样网桥一和网桥三就相当于在同一个物理网络中了,而容器一、容器三、容器四也在同一个物理网络中了,他们之间可以相互通信,而且可以跟同一vlan中的其他物理机器互联,如上图所示。

下面以ubuntu系统为例,创建跨多个主机主机的容器互联。
首先,创建自己的网桥br0,编辑/etc/network/interface文件:

auto br0
iface br0 inet static
address 192.168.43.216#这里具体需要填写你自己主机的IP地址
netmask 255.255.255.0
gateway 192.168.43.1#需要你填写具体的网关 route -n查看
bridge_ports em1
bridge_stp off
dns-nameservers 8.8.8.8 192.168.6.1

重启后,默认将本地物理网em1连接到了br0上。
在本地修改 /etc/default/docker文件,添加最后一行内容:

DOCKER_OPTS="-b=br0"

在启动Docker的时候使用-b参数可以将容器绑定到指定网桥br0上。
这样的情况下,容器端口通过映射直接暴露到物理网络上,多台物理主机的容器通过访问外部映射端口即可相互联网了。这样实现的主要问题是需要知道容器所在物理主机的IP地址。

猜你喜欢

转载自blog.csdn.net/huang_yong_peng/article/details/82937051