使用网桥实现跨主机容器连接:在同一个docker的主机中docker容器使用默认的docker0网桥来进行网络的通信,如果将连接容器的网桥也桥接到docker主机的网卡上,并且将网桥分配的ip地址与docker主机分配的ip地址设置为同一ip段,就相当于将容器与docker主机的网咯连接在了一起,就实现了跨主机的容器间的通信。
在不同的docker主机中分别创建网桥,并使用这个网桥来连接docker主机的物理网卡和docker容器,就意味着将不同docker主机中的容器都分配在了同一网段下
虚拟机a
ip: 192.168.153.131
虚拟机b
ip: 192.168.153.132
虚拟机a
docker network create --driver bridge --subnet 192.168.10.0/24 --gateway 192.168.10.1 net-test
docker network ls
虚拟机b
docker network create --driver bridge --subnet 192.168.20.0/24 --gateway 192.168.20.1 net-test
docker network ls
虚拟机a
docker run -it --network=net-test -p 8080:80 centos:7 /bin/bash
虚拟机b
docker run -it --network=net-test -p 8080:80 centos:7 /bin/bash
分别对虚拟机a,虚拟机b设置静态路由,实现虚拟机a可以直接访问虚拟机b的docker net-test 网卡里面的容器,虚拟机b可以直接访问虚拟机a的docker net-test 网卡里面的容器
route add -net 192.168.20.0(虚拟机b 网段) netmask 255.255.255.0(虚拟机b 子网掩码) gw 192.168.153.131(虚拟机b ip)
虚拟机a
route add -net 192.168.20.0/24 gw 192.168.153.132
或者
route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.153.132
虚拟机b
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.153.131
或者
route add -net 192.168.10.0/24 gw 192.168.153.131
虚拟机a
docker run -it --name test --network net-test mycentos:1.0 /bin/bash
虚拟机b
docker run -it --name test --network net-test mycentos:1.0 /bin/bash