自定义网桥模式实现跨主机Docker通信

本文介绍了如何通过自定义网桥模式,设置相同网段的地址,桥接主机网卡,实现跨主机Docker容器的互通。详细步骤包括地址划分、主控和线卡设置,以及容器互通测试,确保不同主机上的Docker容器能够相互通信。
摘要由CSDN通过智能技术生成

概念

不同主机上的Docker容器通过某些方法可实现跨主机通信,但是一般不同主机上的Docker容器内的IP地址不是处于同一个网段,但是可以通过自定义网桥的方式,将不同主机的自定义网桥设定为同一个网段,并桥接主机上的网卡,实现跨主机通信。

整个网络的拓扑结构图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yG3Q77hG-1577353005068)(D:\github\reading-notes\Docker\img\自定义网桥实现跨主机通信.png)]

地址划分

###主控:

ip地址:192.168.84.83

网卡:eth20

网关:192.168.84.1

自定义网桥名称:br1

自定义网桥地址:192.168.84.1

主控上容器ip地址池:192.168.84.224/28

线卡

ip地址:192.168.84.85

网卡:eth20

网关:192.168.84.1

自定义网桥名称:br1

自定义网桥地址:192.168.84.1

主控上容器ip地址池:192.168.84.240/28

主控设置

在设置之前,主控中没有br网桥,ip路由显示192.168.84.0/24网段路由通过网卡eth20端:

[root@jamza_vm_master_litepaas master]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:83:aa:bb:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.83.83/24 brd 192.168.83.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:83ff:feaa:bb00/64 scope link
       valid_lft forever preferred_lft forever
3: eth20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:83:aa:bb:20 brd ff:ff:ff:ff:ff:ff
    inet 192.168.84.83/24 brd 192.168.84.255 scope global eth20
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:83ff:feaa:bb20/64 scope link
       valid_lft forever preferred_lft forever
4: eth21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:83:aa:bb:21 brd ff:ff:ff:ff:ff:ff
    inet 192.168.85.83/24 brd 192.168.85.255 scope global eth21
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:83ff:feaa:bb21/64 scope link
       valid_lft forever preferred_lft forever
5: docker_gwbridge: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 02:42:0c:8b:82:cc brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/20 scope global docker_gwbridge
       valid_lft forever preferred_lft forever
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 02:42:0f:34:eb:4b brd ff:ff:ff:ff:ff:ff
    inet 10.76.84.11/24 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:fff:fe34:eb4b/64 scope link
       valid_lft forever preferred_lft forever
[root@jamza_vm_master_litepaas master]#
[root@jamza_vm_master_litepaas master]# ip route
default via 192.168.83.1 dev eth0
10.76.84.0/24 dev docker0 proto kernel scope link src 10.76.84.11
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth20 scope link metric 1003
169.254.0.0/16 dev eth21 scope link metric 1004
172.18.0.0/20 dev docker_gwbridge proto kernel scope link src 172.18.0.1
192.168.83.0/24 dev eth0 proto kernel scope link src 192.168.83.83
192.168.84.0/24 dev eth20 proto kernel scope link src 192.168.84.83
192.168.85.0/24 dev eth21 proto kernel scope link src 192.168.85.83
[root@jamza_vm_master_litepaas master]#

在主控上创建一个网桥,为网桥分配ip地址,并将自定义的网桥桥接本地的网卡eth20:

[root@jamza_vm_master_litepaas master]#
[root@jamza_vm_master_litepaas master]# brctl addbr br1
[root@jamza_vm_master_litepaas master]#
[root@jamza_vm_master_litepaas master]# ifconfig br1 192.168.84.1 netmask 255.255.255.0
[root@jamza_vm_master_litepaas master]#
[root@jamza_vm_master_litepaas master]# brctl addif br1 eth20
[root@jamza_vm_master_litepaas master]#
[root@jamza_vm_master_litepaas master]#

修改docker的服务端配置,使得docker默认连接自定义的网桥br1,而不是默认的docker0网桥,并配置主控上的容器ip地址池为192.168.84.224/28,以防止主控上的容器ip地址与线卡上的容器ip地址冲突,注意,设置默认网桥与地址池的字段分别是bridge与fixed-cidr,然后重启docker服务端:

[root@jamza_vm_master_litepaas master]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值