docker 使用网桥实现跨主机容器链接
基本思想:由于Docker容器通过docker0 网桥实现同一主机间中,容器的ip地址分配和访问,所以,如果希望Docker跨主机访问,最简单的方式就是将不同主机的docker0 设置为同一网段。那么怎么实现跨主机呢?我这里将本机网卡也通过网桥来连接,那么,整体网络拓扑结构就是这样:但是通过这种桥接,所有网卡都要在一个网段下,所以要对每个Docker守护进程对ip的
·
基本思想:
由于Docker容器通过docker0 网桥实现同一主机间中,容器的ip地址分配和访问,所以,如果希望Docker跨主机访问,最简单的方式就是将不同主机的docker0 设置为同一网段。
那么怎么实现跨主机呢?我这里将本机网卡也通过网桥来连接,那么,整体网络拓扑结构就是这样:
但是通过这种桥接,所有网卡都要在一个网段下,所以要对每个Docker守护进程对ip的分配做出限制
下面,我们就来实现这个结构:
操作:
我用的是两台centos7.1的服务器
host1:10.20.23.144 eth0
host2:10.20.23.213 eth0
具体操作如下:
以下,以Host1 为例,Host2 上操作相似,只是网卡名字不一样,我在这里,没有使用默认的docker0 网桥,而是新建了虚拟网桥.
brctl addbr br1
为网桥分配一个同网段ip
host1
ifconfig br1 192.168.2.1 netmask 255.255.255.0
host2
ifconfig br1 192.168.2.2 netmask 255.255.255.0
host1,host2都要操作:
桥接本地网卡:
brctl addif br1 eth0
这里,我们就准备好了网桥设置
下面我们来修改Docker的配置,使用我们新建的网桥代替docker0:
修改 /etc/sysconfig/docker文件
host1
cat /etc/sysconfig/docker
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io -b=br1 --fixed-cidr='192.168.2.64/26' "
host2
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io -b=br1 --fixed-cidr='192.168.2.128/26' "
这里,-b 用来指定容器连接的网桥名字
--fixed-cidr用来限定为容器分配的IP地址范围
保存文件并重启Docker服务
systemctl restart docker
下面,就可以来验证:
分别在两个Host上启动一个容器
docker run -it dockersdd/cct1
在容器中运行ping命令查看连接情况
[root@5dc021f7ecf8 /]# ping 172.17.0.6
PING 172.17.0.6 (172.17.0.6) 56(84) bytes of data.
64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.047 ms
更多推荐
已为社区贡献4条内容
所有评论(0)