docker提供了三种自定义网络驱动:bridge、overlay、macvlan。
bridge驱动类似默认的bridge网络模式,但增加了一些新的功能;
overlay和macvlan是用于创建跨主机网络。建议使用自定义的网络来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。
######1.自定义网桥bridge######
###1.清理容器及数据卷###
[root@server1 ~]# docker rm -f epic_mccarthy vm1 vm2 vm3
[root@server1 ~]# docker volume prune
###2.原生网络bridge模式###
(ctrl+p+q打入后台运行)
(两个容器在同一个网段,但是不能相互通信)
###3.创建自定义网桥###
[root@server1 ~]# docker network create --driver bridge my_net1 ##创建网桥
还可以自己定义网段: 在创建时指定参数:--subnet (定义网段)、--gateway(定义网关)
[root@server1 ~]# docker network create --subnet 172.21.0.0/24 --gateway 172.21.0.1 my_net2
##自定义网段、网关、网桥名称
###4.同一网桥容器间的通信###
同一网桥上的容器是可以互通的。
###5.不同网桥容器间的通信###
使用--ip参数可以指定容器ip地址,但必须是在自定义网桥上,默认的bridge模式不支持。
桥接到不同网桥上的容器,彼此是不通信的。 docker在设计上就是要隔离不同network的。
使用 docker network connect命令为vm1容器添加一块my_net2 的网卡,使两个不同网桥的容器通信。
[root@server1 ~]# docker network connect my_net2 vm1 ##给容器添加网卡
[root@server1 ~]# docker container attach vm1 ##将后台运行的容器在当前运行